可以控制JIT编译器

时间:2018-02-22 06:02:48

标签: c# .net jit

我编写了一个小型应用程序,用于以图形方式显示时间序列,点击按钮,通过在频域中乘以复数传递函数对其进行过滤,并显示已过滤的时间序列。

所需的傅里叶变换是与interop一起使用的众所周知的非托管本机实现(FFTW)。还有一些复制,零填充到频谱,计算复杂传递函数的样本,当然还有显示系列(在表格中使用GDI +),所有这些都在托管的c#中。

对于较长时间序列(> 100k样本),我不会感到惊讶的是有短暂的延迟(一秒到几秒)。让我感到惊讶的是,在第一次按下按钮(以及上面描述的相应计算)时,延迟比后续点击时长得多(不,我不是缓存结果)。比如说2秒而不是0.2秒。

这可能是JIT编译器的影响吗?如果是,是否在第一次调用期间解释了代码,并且在以下调用期间它是本机运行的?或者它必须是编译时间本身导致额外的延迟?

有没有办法监控JIT编译器的操作(例如,找出它是否会导致延迟)。

最后,由于这种现象对用户来说有点刺激,有没有办法指示JIT编译器提前编译一些选定的方法而不是及时编译?

0 个答案:

没有答案