Mar*_*ark 0 c# if-statement function-call iequalitycomparer
我正在写一个有趣的节目,每次演出对我来说都是非常痛苦的.所以我想知道什么是更好的 - 制作一个额外的"if"语句来减少一些函数调用,或者避免那些"如果"adn获得更多的函数调用.该函数是虚方法,它覆盖IEqualityComparer的方法Equals,它所做的只是比较2个文件的大小和散列.if语句比较这两个文件的大小.我认为你明白了这个逻辑.你可以看到我正在用C#编写这个程序.所以也许任何人都可以回答我,因为这不是我第一次想知道该选择什么.谢谢
小智 8
如果你真的需要这么多性能,为什么不用汇编语言编程呢?
如果您仍然确定您绝对需要担心这一点,请首先检查具有更多潜力的其他优化机会(更好的算法可以使得数量级比任何微优化更具差异性).
如果你把生活中的粪便从其他一切中优化出来,唯一可以确定的方法就是剖析.真.无论我们有多么努力猜测,他们都可能会低估JIT.
我仍然对此有一个看法:一般来说,分支错误预测可能比函数调用受到的伤害更多,因为它会破坏缓存.但谁说它编译成可能会破坏缓存的代码呢?编辑:但是因为看起来你正在比较严格相等的文件内容,所以如果长度不同则短路可以节省很多时间(考虑:文件系统告诉你长度需要多长时间?它可能已经知道了,所以几乎没有.你需要多长时间来散列一个10 MB的文件?很长,n比较).所以,如果我猜对了,那就去做短路,大声喊叫.