【发布时间】:2016-09-06 03:10:39
【问题描述】:
JVM 和 .NET CLR 都包含支持多用户线程的即时编译器。但是,我相信这些都是一次方法的 JIT。
我知道的所有tracing JITs,例如LuaJIT 和PyPy,都只是单线程的。
是否有跟踪支持多用户线程的 JIT 的示例?如果没有,是否有任何技术原因导致这些不存在?
【问题讨论】:
-
.NET 支持多核 jit。但一般来说,它并不是一个通用的解决方案,它只有在核心忙于抖动时才会产生任何明显的效果。这需要一台时间机器,它知道接下来可能使用什么方法。通过记录配置文件数据(方法执行的顺序)在 .NET 中解决。因此,下一次程序运行时,它们可以被提前运行。时间机器很棘手,他们告诉你 2015 年人们有悬浮滑板和飞行汽车。嗯,悬浮滑板是真的。
-
@HansPassant - 使用后台线程来 JIT 编译代码很有趣,我不知道 .NET 有这个功能。但是,即使在添加此功能之前,用户也可以创建多个线程——因此已经需要 .NET JIT 在多个线程上编译代码。尽管如此,.NET 仍然一次 JIT 编译一种方法。我的问题是关于Tracing JITs:在多个线程(在后台或支持多个用户线程)上编译的跟踪 JIT 是否有任何技术障碍?
标签: multithreading compilation jit pypy luajit