问题标签 [jit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
224 浏览

c# - 有什么方法可以确保函数是 JIT 编译的?

我有一个函数,我想确保它是编译的 JIT(即在它被调用之前)。是否有可以确保这一点的属性或程序集设置?如果不是,那我怎么能保证一个函数是 JIT 编译的呢?

谢谢!

编辑:

我想这样做是为了防止我的应用程序由于缺少引用的程序集而崩溃。如果我的函数是 JIT 编译的,我可以将引用缺失程序集的函数调用包装在 try...catch 块中并优雅地处理这种情况。

据我了解,有时整个类(甚至整个应用程序)可能会被 Jitted - 这会导致我无法捕捉到的错误。

0 投票
3 回答
4079 浏览

c# - C# 编译器和 JIT 都做了哪些优化?

我正在为我的编译器类继续我的 C# 编译器的工作。目前,我几乎完成了教科书中关于编译器优化的章节。

在大多数情况下,我的教科书在编写时并没有考虑到即时编译,我很好奇 C# 编译器执行的静态预jit 优化与它在 JIT 过程中的作用?

当我与人们谈论针对 CLR 进行编译时,我通常会听到诸如“大多数优化都是由 JIT 完成的”之类的话。

循环展开、常量折叠/传播、指令交织等事情是由 C# 的编译器预先完成还是由抖动处理?如果它们没有被抖动处理,那么抖动做了什么样的优化,这是即时编译器所独有的?

0 投票
5 回答
365 浏览

java - Java 优化

我想知道两者之间是否存在任何性能差异

  1. 字符串 s = someObject.toString(); System.out.println(s);

  2. System.out.println(someObject.toString());

查看生成的字节码,似乎有区别。JVM 是否能够在运行时优化此字节码以使两种解决方案都提供相同的性能?

在这个简单的情况下,当然解决方案 2 似乎更合适,但有时出于可读性的目的,我更喜欢解决方案 1,我只想确保不会在关键代码部分引入性能“降低”。

0 投票
4 回答
6494 浏览

.net - 在 64 位 Windows 机器上使用 32 位 com 运行 32 位应用程序

我有一个使用 C++ COM 对象的 C# 应用程序,它们都构建在 32 位机器上。现在我必须在 64 位机器上运行它们。我注册了 COM 对象。在 computer\hkey_classes_root\wow6432node\clsid{xxx} 下的寄存器中创建了相应的条目。但是,当我尝试运行应用程序时,它说 |“检索具有 CLSID {xxx} 的组件的 COM 类工厂失败,原因是以下错误:80040154。”。据我了解,错误代码表示该类未注册。请帮忙!!!谢谢

0 投票
3 回答
7930 浏览

android - 你将如何改进 Dalvik?Android的虚拟机

我目前正在写一篇关于Android平台的论文。经过一番研究,很明显Dalvik还有改进的空间。我想知道,您认为将开发人员的时间用于实现这一目标的最佳方式是什么?

JIT 编译似乎是一个大问题,但我也听说这在如此低资源的机器上使用有限。有没有人有资源或数据支持这一点?

是否还有其他选择需要考虑?除了开发一个强大的原生开发工具包来绕过虚拟机。

对于那些感兴趣的人,有一个关于Dalvik VM的讲座已经录制并在线发布。

欢迎任何想法,因为这个问题看起来很主观,我会澄清我将接受的答案必须有一些对提议的更改的理由。任何支持它的数据,例如 Sun JVM 在引入时的改进,都将是一个巨大的优势。

0 投票
2 回答
328 浏览

debugging - 如何检测非托管应用程序已中止

我有一个 C# 应用程序,它通过 Process.Start() 调用非托管 C++ 应用程序

在某些机器上,如果这个 C++ 应用程序中止,我会看到即时错误对话框显示

有没有办法从 C# 中检测到 C++ 应用程序出错并重新启动它

(我没有源代码,因此无法修改 C++ 应用程序)

0 投票
3 回答
855 浏览

clr - JVM/CLR 执行本机代码

JVM/CLR 如何执行 JIT 编译的原生代码?是通过一些代码注入还是通过将代码复制到可执行内存?允许动态代码执行的系统调用是什么?

0 投票
2 回答
868 浏览

.net - .NET JIT 是否优化嵌套的 try/catch 语句?

我一直在考虑嵌套的 try/catch 语句,并开始考虑在哪些条件下(如果有的话)JIT 可以对编译的 IL 进行优化或简化。

为了说明,请考虑以下异常处理程序的功能等效表示。

假设嵌套 try 语句的堆栈帧内没有额外的变量引用或函数调用,JIT 能否得出堆栈帧可能折叠为线性示例的结论?

下面的例子怎么样?

我认为 JIT 没有任何方法可以内联委托调用,因此这个示例不能简化为上一个示例。但是,在foo()throwing的ExceptionC情况下,与线性示例相比,此解决方案的性能是否较差?我怀疑从委托调用中拆除堆栈帧会产生额外的成本,即使帧中包含的额外数据很少。

0 投票
3 回答
922 浏览

java - 智能 JVM 和 JIT 微优化

随着时间的推移,Sun 的 JVM 和 JIT 变得非常聪明。过去作为必要的微优化的常识已经不再需要,因为它会为您处理好。

例如,过去的情况是您应该将所有可能的类标记为最终类,因此 JVM 内联尽可能多的代码。但是现在,JIT 根据在运行时加载的类知道您的类是否是最终类,如果您加载一个类以使原始类不可最终化,它会取消内联方法并将其取消标记为最后。

JVM 或 JIT 还为您做了哪些其他智能微优化?

编辑:我把它做成了一个社区维基;我想随着时间的推移收集这些。

0 投票
3 回答
186 浏览

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

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