|
|
1
18
您可能想看看这些文章:
JIT Optimizations - (Sasha Goldshtein - CodeProject)
老实说,你不应该太担心这一层次的微观细节。让编译器/jit'er为您担心这个问题,它比您在几乎所有情况下都更擅长这个问题。别挂断电话 Premature Optimisation . 集中精力让代码正常工作,然后担心稍后的优化是否(a)它运行不够快,(b)您有“大小”问题。 |
|
2
17
如果您担心性能问题,请运行分析器。 然后 更改代码。很可能你永远不会在一百万年内100%正确地猜测时间的去向。您可以更改0.02%的计时,并保留占负担62%的方法。你也可能使情况变得更糟。如果没有探查器和证据,你就是盲人。 你不能 假定 JIT将内联一个属性getter。它可以这样做,也可以不这样做,原因有很多:方法体的大小、虚拟、值与引用类型、体系结构、附加的调试器等。 “起重”还有一个地方,还可以实现节约 如果 在一个紧密的循环中反复调用代码;例如:
(忘了
JIT识别这一点并删除边界检查(因为数组的大小是固定的)。 |
|
|
3
1
这看起来像是一种你不应该看到的微观优化。如果我没有弄错的话,这取决于应用哪种优化的CLR的体系结构和版本。 如果你的方法被调用那么多, 真的? 如果想让它内联,你可以自己内联它,代价是要牺牲意大利面代码。 我建议您分析您的算法,内联一个方法不会节省速度的大小,而一个更好的算法可以使您的运行时间从小时减少到秒。 |
|
|
4
-1
JIT执行的最强大的优化通常是内联的。一个jit甚至可以嵌入数百个函数深度(我听到了jikesrvm的这个数字)。它们甚至会内联那些不总是可能内联的东西,如果需要的话,可以稍后将其退出(称为动态去优化)。 对于您的特定问题,我可能会说,如果所讨论的函数调用是 热的 . |
|
|
A B · C#Excel自动调整列避免长文本时出错 10 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 11 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 11 月前 |
|
|
Duck0 · 这个对象在更高的帧率下会更快吗,因为它在Update()中? 11 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 11 月前 |