- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Stack Overflow 上向所有编译器设计者致以问候。
我目前正在从事一个项目,该项目的重点是开发一种用于高性能计算的新脚本语言。源代码首先被编译成字节码表示。字节码然后由运行时加载,它对其执行积极的(可能是耗时的)优化(这比大多数“提前”编译器所做的更进一步,毕竟这是整个过程中的重点。项目)。请记住,此过程的结果仍然是字节码。
然后字节码在虚拟机上运行。目前,这个虚拟机是使用直接跳转表和消息泵来实现的。虚拟机通过指针运行字节码,在指针下加载指令,在跳转表中查找指令处理程序并跳转到其中。指令处理程序执行适当的操作,并最终将控制权返回给消息循环。虚拟机的指令指针递增,整个过程重新开始。我能够用这种方法实现的性能实际上非常惊人。当然,实际指令处理程序的代码又是手动微调的。
现在,大多数“专业”运行时环境(如 Java、.NET 等)都使用即时编译在执行前将字节码转换为 native 代码。使用 JIT 的 VM 通常比字节码解释器具有更好的性能。现在的问题是,由于解释器所做的基本上就是加载一条指令并在跳转表中查找跳转目标(记住指令处理程序本身是静态编译到解释器中的,所以它已经是 native 代码),是否会使用即时编译会提高性能还是会降低性能?我真的无法想象解释器的跳转表会降低性能,以弥补使用 JITer 编译该代码所花费的时间。我知道 JITer 可以对代码执行额外的优化,但在我的情况下,在执行之前已经在字节码级别执行了非常积极的优化。你认为我可以通过用 JIT 编译器替换解释器来获得更快的速度吗?如果是这样,为什么?
我知道同时实现方法和基准测试将为这个问题提供最准确的答案,但如果有明确的答案,可能不值得花时间。
谢谢。
最佳答案
答案在于单字节代码指令复杂度与跳转表开销的比率。如果您正在模拟大型矩阵乘法等高级操作,那么一点开销将是微不足道的。如果您增加单个整数,那么当然会受到跳转表的显着影响。总体而言,平衡将取决于语言用于时间紧迫的任务的性质。如果它打算成为一种通用语言,那么对于所有内容来说,开销最小会更有用,因为您不知道在紧密循环中将使用什么。为了快速量化潜在的改进,只需对执行一些简单操作(但无法优化掉的操作)的嵌套循环与等效的 C 或 C++ 程序进行基准测试。
关于jit - 及时编译总是更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697359/
我正在尝试使用 jsmart渲染Smarty客户端有 3 个模板。如果您没有使用它们的经验,请继续阅读,因为这可能只是我犯的一个简单的 JavaScript 错误。 它适用于简单的模板: 我创建模板(
对于每个 http 请求,ASP .NET 页面是否及时编译(JITting),或者在第一次请求页面时,或者在应用程序启动时编译? 我找不到任何相关资源。 最佳答案 ASP.NET automatic
我正在使用 Pandas 来管理一组具有多个属性的文件: import pandas as pd data = {'Objtype' : ['bias', 'bias', 'flat', 'fla
有没有办法找出单循环动画 GIF 需要多长时间才能完成? 最佳答案 好吧,具体情况取决于您使用什么接口(interface)来操作这些动画 GIF(我不知道原生 Java/AWT/Swing 中真正巧
我有三个相关列:时间、ID 和交互。我如何创建一个新列,其 id 值在给定时间窗口中的“交互”列中为“1”? 应该看起来像这样: time id vec_len quadrant int
我是一名优秀的程序员,十分优秀!