现在,我正在java+LWJGL
开发一个沉重的2D游戏(好吧,当我说“沉重的2D游戏”时,它看起来很有趣,但相信我,我会使用很多资源),好吧,假设我有TOC(TOC在巴西,可能用英语... OCD
?),所以我必须写,因为我将使用第三方,API 。比如,我有一个用于LWJGL的API(一个用于OpenGL API的API,lol),以及许多其他API类。而且,在这些API中,在构造函数中,我从不使用原语(仅构造函数,我仍然使用基元的字段),但是而是使用Number类(所以我可以调用使用Integer,Float,Double和我想要的任何方法。然后,在构造函数中,我使用number.doubleValue()
或number.intValue()
翻译数字,具体取决于我想要的内容。
那么,这可以显着影响我游戏的性能吗?到目前为止,在早期 - 中期开发阶段,我的表现仍然可以,但我担心它会导致我后期重写大部分代码。哦,抱歉我的英语不好,这不是我的主要语言。
答案 0 :(得分:1)
null
)Object
- 接受类(List,Set,Map,...)并且想要避免装箱(通过一直使用盒装值)任何与性能相关的事情都必须首先进行基准测试,否则你会发现自己优化了一段程序,没有花费可测量的时间,甚至也没有"悲观化"它。 Java中的低级优化非常困难,因此您最好将注意力集中在清晰度和可读性上,这样您就可以测量速度,识别瓶颈并在之后优化它们。
关于盒装原语,恕我直言最大的性能影响并非来自对象创建,而是来自间接(创建发生一次,重复缓存未命中代价很高)。
我不同意关于"花哨的OOP东西"的dognose。类提供的所有内容都可以在没有装箱的情况下使用,使用盒装原语是OOP方法无法做到的痛苦(意外的NullPointerException
,非工作转换等等,恕我直言太糟糕了)