它仅仅意味着对大型结构可能的性能优化.用结构替换类时最终可能会遇到的那种.小结构在按值传递时表现最佳,然后结构成员可以通过CPU寄存器,而不必担心必须将更改传播回调用方.通过引用传递需要在每个成员访问上额外间接,这使结构的一个优点无效.
按值传递大型结构会导致在方法入口和出口处复制struct值的成本.抖动始终假定成员访问需要快速,即使不频繁的成员访问会使参考传递更加优化.从技术上讲,优化器可以找出最佳选择,但是这种流分析很难正确完成,优化器总是能够避开停机问题.必须在不需要改变CLR和抖动的情况下进行这些语言更改.
所以盲目地应用in(或ref)不是一个好主意,你必须交换额外间接的成本与复制.实际上,当探查器向您显示特定方法调用是瓶颈时,您会考虑这一点.正如C#团队所做的那样,我认为这些变化的灵感来自于让Roslyn更快.
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |