gpt4 book ai didi

java - 在游戏中使用 'Number' 类而不是原语?

转载 作者:行者123 更新时间:2023-12-01 13:06:10 28 4
gpt4 key购买 nike

现在,我正在开发一款重型 2D 游戏,写入 java+LWJGL (好吧,当我说“重型 2D 游戏”时,它可能看起来很有趣,但相信我,我将使用大量资源),并且,好吧,假设我有 TOC(TOC 在巴西,也许在英语中它是... OCD ?),所以我必须为我将使用第三方的所有内容编写一个 API。比如,我有一个用于 LWJGL 的 API(一个用于 OpenGL 的 API 的 API,哈哈),以及许多其他 API 类。而且,在这些 API 中,在构造函数上,我从不使用基元(仅构造函数,我仍然使用基元的字段),但是我使用 Number 类(因此我可以调用使用 Integer、Float、Double 和任何我想要的方法)。然后,在构造函数内,我使用 number.doubleValue() 翻译数字。或number.intValue() ,取决于我想要什么。

那么,这会显着影响我游戏的性能吗?到目前为止,在早中期开发阶段,我的表现还可以,但我担心这会导致我后期重新编写大部分代码。哦,抱歉我的英语太糟糕了,这不是我的主要语言。

最佳答案

除非您确实需要,否则不要使用盒装原语。一个很好的理由可能是

  • 您需要未定义状态的表示(使用 null)
  • 您将它们放入 Object 接受类(List、Set、Map...)中,并希望避免装箱(通过始终使用装箱值)

任何与性能相关的事情都必须首先进行基准测试,否则您可能会发现自己优化一个程序没有花费可测量的时间,甚至“悲观”它。 Java 中的低级优化非常困难,因此您最好专注于清晰度和可读性,以便您可以测量速度、识别瓶颈并随后对其进行优化。

关于装箱基元,恕我直言,最大的性能影响不是来自对象创建,而是来自间接(创建发生一次,重复的缓存未命中成本高昂)。

我不同意dognose关于“花哨的OOP东西”的观点。类提供的所有内容都可以在不装箱的情况下使用,并且使用装箱基元是 OOP 方法永远无法解决的痛苦(意外的 NullPointerException、无效转换等,恕我直言,太糟糕了) )。

关于java - 在游戏中使用 'Number' 类而不是原语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252827/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com