multithreading - 有多线程跟踪JIT编译器的示例吗?

标签 multithreading compilation jit pypy luajit

JVM和.NET CLR均包含支持多个用户线程的即时编译器。但是,我相信这些都是一次方法JIT。

我知道的所有tracing JITs(例如LuaJITPyPy)都是单线程的。

是否有跟踪支持多个用户线程的JIT的示例?如果没有,是否存在任何不存在这些原因的技术原因?

最佳答案

对运行中的多线程程序进行性能分析(跟踪)要困难得多,但并非没有可能。跟踪的全部目的是使运行时比第一次优化的编译器更好。如果线程是互连的,那么将要修改代码的JIT不仅需要了解代码的执行方式,还需要了解其他线程的副作用。

当线程一需要访问内存中的大文件时,它是否会创建二级缓存刷新,从而导致线程二由于运行代码的外部原因而停顿。 JIT必须了解这些交互。否则,当意识到对线程一的编码会对线程二产生不利影响并尝试消除缓存刷新时,对线程二进行的改进将可能花费大量时间来尝试优化线程二。

您是否正在考虑尝试编写自己的跟踪多线程JIT?可以做到,但是涉及到它。

关于multithreading - 有多线程跟踪JIT编译器的示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340082/

相关文章:

Java:如何在文件中找到相遇词的数量?

java - 在 Android 中异步执行方法的最佳方式(紧凑且正确)

c++ - 为什么这个类型别名会导致编译错误(C++)?

java - 测量线程之间的计算时间 - java

c++ - 从控制台线程读取或获取命令

java - 如何在maven中添加jar路径?

java - 让 JFlex 和 Cup 协同工作

java - JIT 会优化这段代码吗?是否需要同步?

c# - Main 方法是 JIT 吗?

java - 静态最终字段与TrustFinalNonStaticFields