gpt4 book ai didi

c# - clr 的原因! PerfView CPU 堆栈中的 JIT_New

转载 作者:太空狗 更新时间:2023-10-29 21:09:26 30 4
gpt4 key购买 nike

我正在使用 PerfView 来调整应用程序,目前第二昂贵的项目标记为:

OTHER < < clr!JIT_New > >

超过 10% 的 CPU。这甚至会持续到测试用例的后续运行。

谁能确定哪些事件或代码实践可能导致动态生成需要 JIT 的新代码?

最佳答案

JIT_New() 是 CLR 中的一个辅助函数,只要您使用 new 运算符在代码中创建新对象,它就会运行。它只是从垃圾收集堆中分配内存并调用类构造函数。或者换句话说,它实现了 Opcodes.Newobj IL 指令。它的名字有点困惑,它与 jitting 你的代码没有任何关系。 jitter 知道的只是一个辅助函数,它将对该辅助函数的调用直接编译到生成的机器代码中。 JIT_Newarr1() 是您会遇到的另一个,它分配一个数组。

我不知道 PerfView,请注意 JIT_New() 的执行时间可能包括执行垃圾收集所需的时间。当 JIT_New() 运行时 gen#0 堆已满时会发生这种情况。这可以解释很大的百分比,JIT_New() 在其他方面非常快。您对此无能为力,这是任何托管程序的固定开销。

关于c# - clr 的原因! PerfView CPU 堆栈中的 JIT_New,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908585/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com