performance - JIT 性能是否会因可写页面而受到影响?

标签 performance compiler-construction operating-system paging jit

书中Linkers and Loaders ,提到可执行文件具有单独代码段的原因之一是代码段可以保存在只读页面中,从而提高性能。对于现代操作系统来说仍然如此吗?视为Just in Time compilers正在动态生成代码,我认为它们需要可写页面。这是否意味着 JIT 生成的代码相比之下总是会受到性能影响?如果是这样,它的影响力有多大?

最佳答案

抛开内存管理的影响(在其他答案中对此进行了解释),CPU不需要不断检查当前指令流是否被修改,并且管道中的中间结果应该被丢弃,并且需要新的代码读。在 jit 编译的情况下,这种情况可能经常发生,具体取决于编译器的设计、CPU 管道的深度、CPU 上代码缓存的大小以及可能修改该代码的其他 CPU 的数量。在设计良好的现代系统中,通常不允许发生这种情况,在现代系统中,代码生成到可写页面,然后标记为可执行和只读。当然这并不是 jit 所独有的。它可能发生在各种自修改代码中。

关于performance - JIT 性能是否会因可写页面而受到影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155483/

相关文章:

compilation - GCC 预处理器输出中的调试信息

compiler-construction - GNU flex 库 libfl 提供什么?

c++ - 访问未分配的页面

c# - 我的应用程序是否可以显示时间,而不管系统时间是否已被修改

java - Android - 音频记录 : Detect a pulse-width modulated signal over the audio jack (mic)

android - Android 中的游标(SQLite)

c++ - 为什么不调用私有(private)成员的默认构造函数?

operating-system - 从逻辑地址到物理地址的转换

MySQL 内存使用率增长到 100%

Java swing setSelectionForeground 性能问题