问题标签 [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 投票
2 回答
102 浏览

.net - 缺少程序集引用的 JIT 编译

我遇到了一个有趣的问题。我有一个由几个程序集组成的应用程序。我安装了应用程序,但忘记了一个小的非必要程序集。该应用程序似乎可以启动并正常工作,直到我找到需要使用该程序集的方法。正如您可能已经猜到的那样,我看到了"Could not load file or assembly 'Blah, Version=1.0.0.0, Culture=neutral, PublicKeyToken=Blah' or one of its dependencies. The system cannot find the file specified."异常。

没有惊喜吧?是的,安装程序可以修复,我的问题就消失了,但我想看看是否有一种编程方式来做到这一点。因此,我尝试将使用非必要程序集的代码包装在 try 块中,并在 finally 块中释放昂贵的资源,如下所示:

认为 JIT 编译器将从 try 块中抛出以最终将控制权返回给 finally 块并且我的资源被释放。事实证明,JIT 编译器在调用方法时抛出。

我曾想过在调用链中将 finally 块移到更高的位置,但是这个方法正在从数百个地方调用。我曾考虑将 Assembly.Load 用于非必要的程序集,但必须使用反射的想法让我觉得很脏。

有没有办法让 finally 块在这种情况下执行而无需过多重组或不必洗澡,我的意思是,使用反射?

0 投票
2 回答
887 浏览

.net - 性能计数器“# of Methods Jitted”应该如何解释?

在尝试使用托管 nt 服务重现报告的问题时,我注意到性能计数器“# of Methods Jitted”不断增加(与“# of IL Bytes Jitted”一起)。报告的行为包括占用大量内存(不一定是机器上可用的所有内容)和消耗 100% 的 cpu。对此 nt 服务的请求(通过 wcf)通常会导致超时,即 90 多秒。(请求来自同一台机器上的 asp.net 站点。)

经过 15 分钟的预热时间后,该值为 127k (3610 kb),一个小时后为 246k (6427 kb),即增加了 119k jitted 方法。

我不认为仅是这种行为会导致报告的问题,因为在服务受到严重破坏之前报告的运行时间只有几个小时。

但是,我仍然对如何解释这个 [显然] 不断增加的数字感兴趣。虽然每小时只有 3 mb,但每周将达到 500 mb。而且,任何人都知道“# of IL Bytes Jitted”是否是垃圾收集的主题?

(在写这篇文章的 20 分钟内,方法数量增加了 33k,字节数增加了约 300k。)


我第一次应该提到的事情......;

  • 我们没有创建、加载或卸载任何应用程序域的代码。
  • 我们没有发射任何东西,并且使用 C# 3,所以没有动态对象。
  • 我们正在使用 NHibernate 和 AutoMapper,它们都使用反射来解决它们的目标。但是,我认为这些库表现良好并且不会导致这种行为。(那里有任何工具可以让我看到哪些方法被jit了?)

变化

  • 删除代码行数和 jitter 方法数之间的比较。正如 Oded 所指出的,计数器还包括 .NET Framework 中的方法。
0 投票
4 回答
565 浏览

jit - 将 JIT 转换为 EXE?

既然有这么多的 JIT 实现,每个 JIT 都会发出本机代码。那么为什么没有人制作像 JIT2EXE 这样的工具来将本机代码保存到本机可执行文件中呢?

0 投票
2 回答
119 浏览

assembly - 以编程方式替换很小部分二进制文件的正确方法是什么?

我有一个游戏代码(来自 ioquake3 项目),它可以即时编译部分游戏二进制文件(qvm 系统)。现在,可以通过加载先前保存的此操作的二进制文件来加速它(使用任何文件更改预防措施)。

但是,指向保存在这些二进制文件中的函数的指针不会通过会话持久化。

什么是即时更改这些的正确方法?(考虑到一个在主应用程序中有可用的汇编程序和汇编程序)

0 投票
7 回答
3144 浏览

c# - .NET CLR 是否真的针对当前处理器进行了优化

当我读到 C# 或 Java 等 JITted 语言的性能时,作者通常说它们应该/可以在理论上胜过许多本机编译的应用程序。理论是本机应用程序通常只是为处理器系列(如 x86)编译,因此编译器无法进行某些优化,因为它们可能不是真正针对所有处理器的优化。另一方面,CLR 可以在 JIT 过程中进行特定于处理器的优化。

有谁知道微软(或 Mono 的)CLR 是否真的在 JIT 过程中执行了特定于处理器的优化?如果是这样,什么样的优化?

0 投票
5 回答
5222 浏览

.net - 如何在 .NET VM (CLR) 中查看 JIT 编译的代码

如何跟踪 JIT-Compiler 生成的本机代码?

谢谢

0 投票
8 回答
29890 浏览

java - 即时编译器和解释器有什么区别?

Just-in-Time-Compiler 和 Interpreter 之间有什么区别,.NET 和 Java JIT 编译器之间有什么区别?

0 投票
6 回答
19305 浏览

windows-phone-7 - Windows Phone 7 和本机 C++/CLI

微软最近为其新的 Phone 7 平台发布了工具和文档,令那些拥有大量 C++ 代码库的人(如我)不再支持原生开发感到沮丧。尽管我发现有人猜测这个决定会被推翻,但我对此表示怀疑。所以我在想,通过调整它以在 C++/CLI 下编译,让这个代码库可用于 Phone 7 是多么可行。当然,用户界面部分无法移植,但我不确定其余部分。有人有类似的经历吗?我不是在谈论执行繁重的低级工作的代码 - 但是模板和智能指针的使用非常频繁。

0 投票
2 回答
2006 浏览

.net - 有人可以简单解释一下如何使用 Threading.MemoryBarrier 在 .Net 中实现“全栅栏”吗?

我很清楚 MemoryBarrier 的用法,但不清楚运行时幕后发生的事情。谁能很好地解释发生了什么?

0 投票
1 回答
3693 浏览

java - Java和.Net之间的JIT有什么区别

我知道 Microsoft .NET 使用 CLR 作为 JIT 编译器,而 Java 有 Hotspot。它们之间有什么区别?