我们如何在没有 JIT 帮助的情况下运行 Java 或 C# 程序?
伪代码:
for(int i=0; i<100; i++)
{
// open file in append mode
// remove last line
// add a line
// close the file
// if any exception occurs, continue with next iteration
}
如何比较启用/禁用 JIT 时该程序的性能?
即使使用 Mono(不再支持其字节码解释器),也无法在没有 JIT 的情况下运行 .NET 代码。
可以为许多 JVM 实现关闭 JIT,例如,
-Xint
用于 Sun JVM。
当代码第一次运行时,它会被解释。只有在运行多次(通常是 10,000 次)之后才会被编译。对于 CPU 密集型任务来说,这可能会产生很大的影响。 然而,对于 IO 密集型任务,操作系统和硬件的影响更大。
因此,对于只有 100 次的循环,无论您是否启用编译器,您都可以确定它不会被编译为本机代码。 对于 IO 密集型任务(并且打开/关闭文件非常昂贵),无论代码是否编译,都会产生如此小的差异,您将很难测量它。