問題タブ [interpreted-language]
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.
performance - ランタイム コンパイル: これがパフォーマンス ヒットではない可能性はありますか?
一部のタイプのランタイム コンパイルではパフォーマンスが低下しないと聞いたことがあります。公式の Python ドキュメントで.pyc
は、ファイルの実行は.py
. (現在、リンクが見つかりません。) これはどのように可能ですか? からバイトコードを生成するのに時間がかかりません.py
か?
PHPのような言語はどうですか?実行ごとにコンパイルする必要はありませんか? なぜこれが欲しいのですか?同じスクリプトを何度も実行すると時間の無駄に思えます。
interpreted-language - 解釈されたスクリプト: 暗黙的な実行と明示的な実行
このスーパーユーザーの質問では、次のように、インタープリターを明示的に実行し、スクリプトを引数として提供することにより、インタープリター付き言語 (php、python など) で記述されたスクリプトを実行する方がよいとアドバイスされました。
> php script.php
スクリプトに行を追加して、OS に実行するように指示するのではなく、次のようにします。
なぜこれが真実なのですか?私の直感では、スクリプトがインタープリターの実行可能ファイルが別のパスにあるシステムに移動された場合、より安全であることがわかりますが、それが唯一の理由ですか?
language-agnostic - コードを少しでも効率的に解釈するにはどうすればよいですか?(理論的)
OK、最初に、私はここでどんな種類の炎上戦争もそれのようなものを望んでいません。私のより大きな質問はより理論的であり、いくつかの例が含まれます。
ですから、私が書いたように、通訳言語がどのように少しでも効率的であるのか理解できません。そして、その現代以来、私は例としてJavaを取り上げます。
JITコンパイラがなかった時代に戻りましょう。Javaには、基本的にハードウェアである仮想マシンがあります。仮想マシンから少なくとも一部のジョブを削除するためにバイトコードにコンパイルされるよりも、コードを記述します。それで問題ありません。しかし、RISC命令セットでさえハードウェアでどれほど複雑になる可能性があるかを考えると、ソフトウェアでエミュレートされたハードウェアでそれを行う方法を考えることすらできません。
私は仮想マシンを作成した経験がないので、それが最も効率的なレベルでどのように行われるかはわかりませんが、適切なアクションを実行するよりも、一致と一致についてすべての命令をテストするよりも効率的なことは考えられません。あなたが知っている、のようなもの:if(instruction=="something") { (do it) } else if(instruction=="something_diffrent"){ (do it) }
など...
しかし、これはひどく遅くなければなりません。それでも、JavaがJITコンパイラの前に遅いという記事があったとしても、それほど遅くはないと言われています。ただし、エミュレートするには、1バイトコード命令を実行するために実際のHWの多くのクロックサイクルが必要です。
それでも、プラットフォーム全体でさえJavaに基づいています。たとえば、Android。そして、Androidの最初のバージョンにはJITコンパイラがありませんでした。それらは解釈されました。しかし、Androidをひどく遅くするべきではありませんか?それでもそうではありません。AndroidライブラリからAPI関数を呼び出すと、それらはマシンコードで記述されているため、効率的であるため、非常に役立ちます。
ただし、画像を表示するためだけにAPIを使用して、独自のゲームエンジンを最初から作成することを想像してみてください。多くの配列コピー操作を実行する必要があります。多くの計算は、エミュレートすると非常に遅くなります。
そして今、私が約束したいくつかの例。私は主にMCUを使用しているので、AtmelAVRMCU用のJVMを見つけました。Thayは、8MHZMCUが1秒あたり20KのJavaオプトコードを実行できると述べています。しかし、AVRは1または2サイクルでほとんどの命令を実行できるので、平均して6000000命令としましょう。これにより、JITコンパイラを使用しないJVMは、マシンコードの処理速度が300倍遅くなります。では、なぜJITコンパイラなしでJavaがそれほど人気になるのでしょうか。これはパフォーマンスの低下がひどいのではないですか?理解できません。ありがとう。
compiler-construction - インタプリタとコンパイラの場合に実行される手順
インタプリタ言語とコンパイル言語の正確な違い。たとえば、1から100までの数値を出力したい。インタプリタとコンパイラの場合、操作のシーケンスはどの程度正確に行われるか。
さらに、可能であれば、Java言語とC言語に応じた手順を教えてください
どうも
optimization - 再帰のオーバーヘッド-それはどれほど深刻ですか?
重複の可能性:
再帰はループよりも高速ですか?
私は約15年前に、Cで真剣にプログラムするように最初に訓練されました。私の雇用主は、計算が難しいタスクのために高度に最適化されたコードを望んでいました。「再帰のオーバーヘッド」を回避するために、読みやすさを犠牲にしても、再帰をループとして書き直すように何度もアドバイスされたことを覚えています。そのとき私が理解したように、再帰オーバーヘッドは、データをスタックにプッシュし、後でそれをポップオフするために必要な余分な労力でした。
今、私はC、Python、Perl、そして時にはJavaでコーディングしていますが、再帰について時々疑問に思います。それらを書き直すことで得られるものはまだありますか?それらが末尾再帰である場合はどうなりますか?最近のコンパイラはこれらすべての問題を解決しましたか?そのような懸念は通訳言語には無関係ですか?
microcontroller - メモリに制約のあるマイクロコントローラ用の高速インタプリタ言語
マイクロコントローラー用の高速通訳言語を探しています。
要件は次のとおりです。
- 高速である必要があります(重要ではありませんが、いいでしょう)
- データメモリを軽くする必要があります(8KB未満の小さなオーバーヘッド、プログラム変数スペースを除く)
- プログラムのサイズが小さく、言語がコンパクトであることが望ましい
- できれば、人間が読める形式(BASICなど)
ありがとう!
interpreted-language - 解釈言語使用時のデータファイル
いくつかの種類のデータが必要だとします。最も簡単な例は、ゲームのタイルだと思います。草、岩、木など、それぞれに異なる値のセットがあります。
すぐに先に進み、ファイルを作成して実行時に読み込むので、C++ などで微調整するためにすべてを再コンパイルする必要はありません。しかし、私が Python やその他の解釈された言語を使用していた場合、次のような形式でファイルを作成する必要があることに多くの意味があります。
種類 草色
0xdfdfdf
歩く 真 真
を見る
それよりも:
class grass(tile):
def init (self):初期化
の方法が思い出せません。両親
self.colour = 0xdfdfdf
最初の明らかな利点は、コンパイルしないと失われます。
linux - インタープリター言語での ncurses のようなバインディング
コンソールメニューを作成し、オプションとやり取りするプロセスを非常に単純にする、インタープリター言語の ncurses または同様のメニューフレームワークのバインディングはありますか?
以前にインストールしたローカル リソースを活用するために、Linux マシンで実行される端末専用の構成ユーティリティのプロトタイプをすばやく作成したいと考えています。
compiler-construction - Webのソースコードとバイトコードから解釈される言語
プログラムが2つの異なる言語で書かれていると仮定します。
- ソースコードから解釈された言語(たとえばPHP)
- バイトコードから解釈される言語(Javaなど)。
2つのプログラムはまったく同じように動作します(簡単にするために、両方とも1行のテキストを出力するとします)。
言語(2)は(1)よりも高速ですか?
理論的には、2つのサイトが同じ機能を提供しているが、一方がPHPで構築され、もう一方がJava(JSP)で構築されている場合、Javaベースのサイトの方が高速であると結論付けることができますか?
ジョエル
c# - シェルスクリプトと高水準インタプリタ言語(C#/ Javaなど)のパフォーマンス比較
まず、これは「より優れた、無知な非イオン性の戦争スレッド」を意味するものではありません...むしろ、私は一般的に、上司に提示するアーキテクチャの決定/議論を行う際に助けが必要です。
詳細をスキップする-C#やJavaなど、シェルと[汎用プログラミング言語(ここに解釈)を挿入)のパフォーマンスを比較した人の結果を知りたいだけです。
驚いたことに、私はこのデータのいずれも見つからないようにここで検索することにGoogleでしばらく時間を費やしました。さまざまなユースケースで、これらの比較を行った人はいますか。XYXのようにデータベースにヒットする#ループの数が異なるタイプのSQLを実行する(Oracle pref、ただしMSSQLは実行する)CRUD opsのいずれかなどのクエリ-データベースにヒットせず、通常の50kループタイプの比較でさまざまなタイプの計算を実行する、そしてその性質のもの?
特に、今のところ、シェルスクリプトからOracle DBをヒットすることと、C#を使用することを比較する必要があります(ここでも、Pythonのような高レベルのものでも解釈されるGPPLは問題ありません)。しかし、私は標準的なプログラミング計算/命令/などについても知る必要があります...
質問する前に、「自分で簡単なテストを書いてみませんか?答えは次のとおりです。私は生涯/キャリアを通じてWindows開発者であり、シェルスクリプトに関する知識は非常に限られています。* nix全体は言うまでもありません。したがって、ここで経験豊富な人に質問するのは非常に有益であり、時間の節約は言うまでもなく、私たちはほぼ予想通りの締め切りに迫っています;)。