タグ付けされた質問 「jit」

1
違いの理解:従来のインタープリター、JITコンパイラー、JITインタープリター、およびAOTコンパイラー
従来のインタープリター、JITコンパイラー、JITインタープリター、AOTコンパイラーの違いを理解しようとしています。 インタープリターは、何らかのコンピューター言語で命令を実行する単なるマシン(仮想または物理)です。その意味で、JVMはインタープリターであり、物理CPUはインタープリターです。 Ahead-of-Timeコンパイルとは、コードを実行(解釈)する前に特定の言語にコンパイルすることを意味します。 ただし、JITコンパイラーとJITインタープリターの正確な定義についてはわかりません。 私が読んだ定義によると、JITコンパイルとは、コードを解釈する直前にコンパイルすることです。 それで、基本的に、JITコンパイルはAOTコンパイルであり、実行(解釈)の直前に行われますか? そして、JITインタープリターは、JITコンパイラーとインタープリターの両方を含み、解釈する直前にコードをコンパイルする(JITする)プログラムですか? 違いを明確にしてください。

11
C ++はJITを使用したJVMまたはCLRよりも高速であるという主張を裏付けるものは何ですか?[閉まっている]
多くの質問で気づいたSEの繰り返しのテーマは、C ++がJavaのような高レベル言語よりも高速で効率的であるという継続的な議論です。反論は、最近のJVMまたはCLRは、増加するタスクのJITなどのおかげで同じように効率的であり、C ++ は、あなたが何をしていて、なぜ特定の方法で物事をしているのかを知っている場合にのみ効率的であるということですパフォーマンスの向上に値します。それは明らかであり、完全に理にかなっています。 JVMやCLRよりもC ++で特定のタスクが高速である理由と方法についての基本的な説明(そのようなことがある場合)を知りたいのですが?JVMまたはCLRが実行時にJITコンパイルの処理オーバーヘッドをまだ持っているのに対して、C ++がマシンコードにコンパイルされているからでしょうか? トピックを調査しようとすると、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について知っていますが、この質問にも気づいていますが、私の質問には答えません。 JITは、ウィンドウを再起動するたびに発生しますか?w3wp.exeプロセスの作成に関連していますか?再起動後の最初のリクエストでサイトが非常に遅いのはなぜですか?
27 .net  asp.net  performance  iis  jit 

4
Chrome V8はどのように機能しますか?そして、そもそもなぜJavaScriptはJITコンパイルされなかったのですか?
私は通訳者/コンパイラを研究してきましたが、その後、JITコンパイル、特にGoogle ChromeのV8 Javascript Engineに出会いました。 私の質問は- どのように標準の解釈よりも速くできますか? そもそもJITコンパイルが使用されなかったのはなぜですか? 私の現在の理解 すべてのJavascriptプログラムはソースコードとして開始され、実行方法に関係なく、最終的にはマシンコードに変換されます。 JIT-CompilationとInterpretationは 両方ともこのパスに従う必要があります。どのようにJIT-Compilationを高速化することができますか(また、AOT-Compilationとは異なり、JITは時間制約があるため)。 JIT-Compilationは、ウィキペディアのJIT-Compilation Articleに基づいた比較的古いイノベーションのようです。 「最初に公開されたJITコンパイラは、一般的に1960年に McCarthyによってLISPで動作するとされています。」 「Smalltalkの(C。1983)たとえば、マシンコードへの変換は、オンデマンドで行われた。JITコンパイルの新たな側面を開拓し、その結果は後で使用するためにキャッシュされた。メモリが不足になった場合、システムはこのコードと再生成の一部を削除しますそれが再び必要になったとき。」 では、なぜJavascript が最初から解釈されたのですか? 私は非常に混乱しており、これについて多くの研究を行ってきましたが、満足のいく答えは見つかりませんでした。 とても明確で簡潔な回答をいただければ幸いです。また、通訳者、JITコンパイラなどについての追加説明が必要な場合は、それも歓迎します。

1
メタサーキュラーインタープリター、仮想マシン、パフォーマンスの向上の関係は何ですか?
私はWeb上のメタ循環インタープリター(SICPを含む)について読み、いくつかの実装(PyPyやNarcissusなど)のコードを調べました。 私は、メタサーキュラー評価を大いに活用した2つの言語、LispとSmalltalkについてかなり読みました。私の知る限り、Lispは最初のセルフホスティングコンパイラであり、Smalltalkは最初の「真の」JIT実装を備えていました。 私が完全に理解していないことの1つは、これらのインタープリター/コンパイラーがどのように非常に優れたパフォーマンスを達成できるか、言い換えれば、PyPyがCPythonよりも速いのはなぜですか?それは反射のためですか? また、Smalltalkの研究により、JIT、仮想マシン、リフレクションの間に関係があると信じるようになりました。JVMやCLRなどの仮想マシンは、大量の型内観を許可し、Just-in-Time(およびAOT、私はそうですか?)コンパイルでそれを大いに活用すると信じています。しかし、私の知る限り、仮想マシンは基本的な命令セットを持っているという点で、CPUのようなものです。仮想マシンには、言語に依存しないリフレクションを可能にするタイプおよび参照情報が含まれているため、効率的ですか? インタプリタ言語とコンパイル言語の両方がバイトコードをターゲット(LLVM、Parrot、YARV、CPython)として使用しており、JVMやCLRなどの従来のVMのパフォーマンスが信じられないほど向上したためです。私はそれがJITについてだと言われましたが、私が知る限り、JITはJavaの前にSmalltalkとSunのSelfがそれを行っていたので、新しいものではありません。過去にVMのパフォーマンスが特に良くなかったことを覚えていません。JVMや.NET以外に学術的なものは多くなく、それらのパフォーマンスは間違いなく今ほど良くありませんでした個人的な経験から話してください)。 その後、突然、2000年代後半に何かが変わり、確立された言語でさえ多くのVMがポップアップし始め、非常に優れたパフォーマンスを発揮しました。ほとんどすべての最新のVMのパフォーマンスが飛躍的に向上したJIT実装について何か発見されましたか?紙か本か?

3
Pythonが最新のJavascript実装のように最適化されていないのはなぜですか?
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のサポートは、任意のアドレスに格納されている防止マシンコード、(インテルおよびARMを含む)は、ビット含む他の実行中からコンパイルされたバイナリのコードセクションより。明らかに、これはシェルコードインジェクション攻撃を防ぐので、優れたセキュリティ上の利点です。 しかし、動的にマシンコードを生成するLLVMのようなJITエンジンはどうやってこれを回避するのでしょうか?
10 machine-code  jit  llvm 

13
Webページ上のJavaScriptの静的に型付けされた代替は実用的でしょうか?
動的型付けと静的型付けの好みは主に好みの問題であり、さまざまな状況でさまざまな人々がそれらを多かれ少なかれ適しています。 私の質問は、クライアント側のWebページ拡張などのために、JavaScriptの静的型付けの代替を技術的に可能にすることは可能でしょうか?

2
現在のJITは、生成されたマシンコードをランタイム統計に基づく分岐予測用に最適化しますか?
一部のJVMは、Javaバイトコードをネイティブマシンコードにコンパイルします。そのために適用できる最適化はたくさんあります。最近、CPUが誤った予測を行うと、分岐操作がCPUをブロックし、パフォーマンスに大きな影響を与える可能性があることも学びました。 収集された実行時統計に基づいて、JVMがCPUがマシンコードをより簡単に生成して正しい予測を行うかどうか誰かが知っていますか?
8 java  jvm  jit 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.