|
1
|
| brainimus user417509 · 技术社区 · 16 年前 |
|
|
1
2
运行您提供的完整示例
只有在调试模式下运行时,慢时间才会变慢。这是因为在调试模式下,方法从不内联,并且到处都有nop允许您中断,例如在Id getter中。 因为您显然关心运行速度,所以我将指出一个无关的低效之处:您运行查询两次:一次用于计数,另一次用于迭代子项。只运行一次(循环中的count增加1)应该会加快速度。
顺便说一句,我通常解决这个问题的方法是,如果打电话给
|
|
|
2
1
好吧,即使属性访问是内联的,我怀疑它仍然需要在每次迭代中做一个空值检查。这是一个额外的条件,例如可能会破坏分支预测。 玩一个完整的例子会很有趣,但我 犯罪嫌疑人 事实上,您对每个委托调用都执行了一个额外的操作。还有一种可能是,这个“额外的一点点”已经关闭了与委托相关的其他一些内联,从而导致了某种domino性能影响。 |
|
|
3
0
|
|
|
4
0
在“功能继续”中,是否再次使用childrenQuery?你知不知道每次都会重新列举这些结构?不要多次枚举大型数据集,每个项目上属性的访问成本不会造成太大影响。
|
|
5
0
如你所见,
而且总是有多线程也会把事情搞砸。由于变异的可能性,检查属性值所需的代价是必要的。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |