-4 c optimization performance c99
我正在制作2D射击游戏,因此我必须在阵列中填充许多子弹,包括它们的位置,以及它们的位置.
所以我有两个问题,一个是内存使用,特别是编写的数组不会使事情不对齐,导致大量的填充或对齐,这使得计算的速度变得很糟糕.
第二是计算速度.
首先,这意味着选择整数或浮点数...现在我将使用整数(如果有人认为浮点数更好,请说出来).
那么,这也意味着选择那种类型的变体(8位?16位?C混淆默认值?CPU字大小?单精度?双精度?)
因此问题是:在现代处理器中C中哪种类型最快(即:常见的x86,ARM和其他流行的处理器,不用担心Z80或36位处理器),以及在使用速度和内存时使用哪种类型更合理帐户?
签名和未签名的速度有差异吗?
编辑是因为关闭投票:是的,它可能是过早优化,但我不仅要求CPU使用,而且要求内存使用(可能会有很大差异),我也在做项目来锻炼我的C技能,这是几年我不用C编码,我想有一些乐趣并找到限制并拉伸它们,并且还学习新标准(上次我使用C它仍然是C89).
最后,当我发现新的标准中存在一些新的有趣类型(如int_fast*_t)时,提出这个问题的主要动机就是黑客的好奇心.
但如果你仍然认为这不值得问,那么我可以删除这个问题并仔细阅读标准和一些书籍,自己学习.如果其他人有一天有同样的好奇心,那不是我的问题.
我会说int你的CPU应该是最舒服的.但C标准确实有:
typedef名称int_fastN_t指定宽度至少为N的最快有符号整数类型.typedef名称uint_fastN_t指定宽度至少为N的最快无符号整数类型
所以在理论上你可以这样说:"我需要它至少16位所以我将使用int_fast16_t".在实践中,这可能转化为平原int.
我怀疑在您实际遇到可以尝试解决的性能问题之前考虑这些问题还为时过早.我认为解决问题比解决问题更好,而不是试图想出可以解决所有未来可能问题的难以捉摸的超级解决方案.