Questions tagged «jit»

JIT(即时编译)是一种改进基于字节码(虚拟机代码)的计算机程序的运行时性能的方法。

1
了解差异:传统解释器,JIT编译器,JIT解释器和AOT编译器
我试图了解传统解释器,JIT编译器,JIT解释器和AOT编译器之间的区别。 解释器只是一台以某种计算机语言执行指令的机器(虚拟或物理)。从这个意义上讲,JVM是解释器,物理CPU是解释器。 提前编译只是意味着在执行(解释)代码之前将代码编译为某种语言。 但是我不确定JIT编译器和JIT解释器的确切定义。 根据我所读的定义,JIT编译只是在解释代码之前就对其进行编译。 因此,基本上,JIT编译是AOT编译,是在执行(解释)之前完成的吗? 还有一个JIT解释器,是一个既包含JIT编译器又包含解释器并在解释它之前对其进行编译(JIT)的程序? 请说明差异。

11
是什么支持C ++可以比使用JIT的JVM或CLR更快的说法呢?[关闭]
我在许多问题中都注意到了SE上一个经常出现的主题,即一个持续的论点,即C ++比Java之类的高级语言更快和/或更有效。相反的论点是,由于JIT等原因,现代JVM或CLR可以同样高效,因为它可以处理越来越多的任务,而C ++ 仅在知道自己在做什么以及为什么以某种方式做事的情况下才更有效率。将会提高性能。这是显而易见的,并且很有意义。 我想知道一个基本的解释(如果有这样的事情...),以为什么和怎么样的任务一定是用C ++更快比JVM或CLR?仅仅是因为C ++被编译成机器代码,而JVM或CLR在运行时仍具有JIT编译的处理开销吗? 当我尝试研究该主题时,我发现的只是上面概述的相同论点,而没有任何确切的信息来了解如何准确地将C ++用于高性能计算。
119 java  c++  performance  jit 

4
适用于C,C ++等的JIT编译器
是否有针对C和C ++等已编译语言的即时编译器?(想到的第一个名字是Clang和LLVM!但是我不认为它们目前支持它。) 说明: 我认为该软件可以受益于运行时性能分析反馈以及在运行时对热点进行积极优化的重新编译,即使对于C和C ++等编译为机器的语言也是如此。 概要文件引导的优化可以完成类似的工作,但是不同的是,JIT在不同的环境中会更加灵活。在PGO中,您在运行二进制文件之前先运行它。发行后,它将不会在运行时收集任何环境/输入反馈。因此,如果更改输入模式,则可能会降低性能。但是,即使在这种情况下,JIT也能很好地工作。 但是,我认为JIT编译性能的好处是否超过其自身的开销是有争议的。

4
为什么每次重新启动后,我的本地.NET站点都需要一些时间才能首次加载?[关闭]
我正在开发基于.NET平台的网站。我通常将这些站点部署在本地IIS上,以便在上线之前对其进行测试并查看其功能。但是,每次我重新启动Windows时,站点似乎都需要很长时间才能首次运行。 我了解JIT,也知道这个问题,但是它不能回答我的问题。 每次重新启动Windows都会发生JIT吗?它与w3wp.exe进程的创建有关吗?为什么站点在每次重新启动后对第一个请求的响应如此缓慢?
27 .net  asp.net  performance  iis  jit 

4
Chrome V8如何运作?为什么JavaScript最初不是JIT编译的?
我一直在研究解释器/编译器,然后偶然发现了JIT-Compilation-特别是Google Chrome的V8 Javascript Engine。 我的问题是- 怎么会比标准口译更快呢? 为什么不首先使用JIT-Compilation? 我目前的理解 每个Javascript程序都从源代码开始,然后不管执行方法如何,最终都将其翻译为机器代码。 无论JIT编译和解释必须遵循这条道路,所以JIT编译怎么会有更快的(也因为JIT是有时间限制的,不像AOT编译)? 基于Wikipedia的JIT-Compilation Article,JIT-Compilation似乎是一个相对较旧的创新。 “最早发布的JIT编译器通常归功于McCarthy在1960年对LISP的研究。” “ Smalltalk(约1983年)开创了JIT编译的新方面。例如,按需转换为机器代码,并将结果缓存起来供以后使用。当内存不足时,系统将删除部分代码并重新生成再次需要它时。” 那么,为什么解释Javascript 开头呢? 我很困惑,对此我做了很多研究,但没有找到满意的答案。 如此简洁明了的答案将不胜感激。并且,如果需要引入有关解释器,JIT编译器等的更多解释,也将不胜感激。

1
元循环解释器,虚拟机和提高的性能之间有什么关系?
我已经在网上阅读了有关元循环解释器(包括SICP)的信息,并且研究了一些实现的代码(例如PyPy和Narcissus)。 我已经阅读了很多有关两种语言的文章,它们充分利用了元循环评估Lisp和Smalltalk。据我了解,Lisp是第一个自托管的编译器,而Smalltalk具有第一个“真正的” JIT实现。 我尚未完全了解的一件事是,那些解释器/编译器如何才能获得如此出色的性能,或者换句话说,为什么PyPy比CPython更快?是因为反射吗? 而且,我的Smalltalk研究使我相信JIT,虚拟机和反射之间存在联系。诸如JVM和CLR之类的虚拟机允许进行大量的类型自省,我相信它们可以在实时(我想是AOT)编译中大量使用。但是据我所知,虚拟机有点像CPU,因为它们具有基本的指令集。虚拟机是否有效,因为它们包含类型和参考信息,从而可以实现与语言无关的反映? 我之所以这么问,是因为现在许多解释型语言和编译型语言都将字节码用作目标(LLVM,Parrot,YARV,CPython),并且传统的VM(例如JVM和CLR)已经获得了令人难以置信的性能提升。有人告诉我它与JIT有关,但据我所知,自从Smalltalk和Sun自己的Self从事Java以来​​,JIT并不是什么新鲜事物。我不记得过去的VM表现特别出色,JVM和.NET之外的非学术类VM并不多,而且它们的性能绝对不如现在好(我希望可以提出这一主张,但我想从个人经验谈起)。 然后突然之间,在2000年代末,情况发生了变化,甚至对于既定的语言,也出现了许多具有良好性能的VM。是否发现了有关JIT实现的信息,该信息使几乎每个现代VM的性能都飙升了?可能是纸还是书?

3
为什么没有像现代Javascript实现那样对Python进行优化?
V8(Chrome),SpiderMonkey(Firefox)和Chakra(IE / Edge)等现代Javascript实现都具有JIT编译功能,并且还有许多其他优化措施可以提高性能。 Python为什么没有这些? 我一直在研究PyPy和IronPython,它们都声称可以提高速度。PyPy我不明白用Python(一种解释性语言)编​​写的Python实现会比C语言中的参考实现更快。IronPython,同样的想法,但我看不到.NET Framework如何提高速度。
11 python-3.x  jit 

1
机器代码JIT和执行禁用位
如果CPU / OS具有“执行禁用”位,运行时生成的机器代码(例如JIT的输出)如何由CPU实际执行? 据我所知,许多现代处理器和操作系统包括用于支持NX位,(包括Intel和ARM),这防止了机器代码被存储在任何地址其它不是从正在执行的编译的二进制的代码部分。显然,这是一个不错的安全优势,因为它可以防止外壳代码注入攻击。 但是,如何动态生成机器代码的JIT引擎(如LLVM)如何解决这一问题?
10 machine-code  jit  llvm 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.