代码应该重写还是应该使用方法?

时间:2013-07-20 14:20:32

标签: c# performance

首先,我找不到这个问题,所以我决定在这里发帖。

在游戏开发过程中,我意识到我在运动场上拥有的实体越多,fps下降的越多,这是预期的。

为了优化它,我在某处阅读(如果我能找到它,我会发布链接),如果你重写代码而不是使用通用方法,它会更快,因为它不需要“链接”方法每次运行代码。但是,由于我正在重写代码,它可能会占用更多的虚拟空间。

我只想知道你对此的看法,如果你认为这是真的。 我很乐意接受任何其他优化策略或链接。

编辑: 选择答案后,问题“过于宽泛”有什么意义?如果答案被选中,则意味着有一个有效的答案,这意味着问题不是太广泛,否则答案者会遇到问题......

由于

2 个答案:

答案 0 :(得分:6)

您应该考虑分析应用的性能特征,而不是试图猜测应用程序中CPU的占用情况。这可以帮助您处理占用大部分CPU时间的代码部分。查找代码中CPU密集程度最高的部分,进行相信可以提高代码性能的调整,然后再次运行性能分析器。一旦进行了更改,分析仪报告的性能特征就会发生相当大的变化并不罕见。如果你不能再对最重的部分进行优化,那就转到下一个最重的部分。

答案 1 :(得分:1)

很久以前,当你有一个单核CPU,运行速度为100Mhz的时候,那么查找函数调用并跳转到该内存位置以运行该方法然后重新开始完成加起来 - 特别是当你有很多小方法,或者一个被称为很多的方法时。

所以他们发明了编译器的内联,它通过将这些小函数直接复制到你的代码中来自动优化代码 - 这样你就可以获得编写方法的好处,并且编译器可以解决问题,所以它仍然像你编写它一样执行全都用了一个大方法。

但就在那时,今天,当你有8个核心手机以几个Ghz运行并流水线化并大量优化编译器时,方法调用的成本微不足道。您将遇到导致性能问题的其他问题。你会。

今天最常见的原因是内存复制,因为CPU运行速度非常快,需要一个稳定的数据流来处理,当你不得不停下来从其他地方获取一块内存时,这真的是成本。当您使用C#时,下一步是查看您的对象创建 - 就像Stringbuffer被发明为使字符串复制表现良好,如果您分配了很多很多很多对象,您会发现它变得很慢。

但是,我猜 - 你的问题可能在其他地方,所以看!找出性能问题的位置,并修复它们。