关于double / float和传递参数的性能优化

时间:2011-09-10 14:02:51

标签: c#

我在项目中用浮动替换了所有双打,从而提高了性能。

现在我所有的功能,不作为参考参数。如果我将它们作为参考传递,我会保存一份副本。如您所知,参数如果未作为参考传递,则会复制到函数中。

我想知道是否值得为200个功能做这件事,我应该期待改进吗?

谢谢

3 个答案:

答案 0 :(得分:1)

一般没有。

黄金法则:

  

过早优化是邪恶的根源

首先,您会发现瓶颈,程序中最慢的部分,然后进行优化。 然后你找到一个新的瓶颈并重复。

首先,您首先要优化算法,然后是数据结构,然后是数据,然后是代码,最后是技术。

答案 1 :(得分:1)

除非方法在一秒钟内被调用数千次,否则我不会改变行为。

你知道通过引用传递东西可能会破坏你的类背后的逻辑。除非您想要更改某些内容,否则有些内容无意修改或更改。 (使用访问器方法更改实例变量)。

否则它将是micro-optimization的号召,并且绝对不值得花时间修改200种方法,只是为了小幅提升性能。

对象在方法中创建的值类型位于堆栈上 - 这意味着它们不再需要被清除一次。

答案 2 :(得分:1)

不,通过引用传递float,您将无法获得任何性能优势。

在32位系统上,float与指向它的指针大小相同。在64位系统上,指针的大小是float的两倍。

此外,即使指针小于值类型,通过引用传递意味着该方法也需要通过引用访问该值,这超过了较小参数类型的性能增益。