JVMバイトコードの発行は従来のオプションです。バイトコードレベルで作業する必要があります。また、バイトコードを発行する前にコードを最適化する必要があります。これは、JVMがバイトコードを発行した後に最適化するためのオプションが限られているためです。良好なパフォーマンスを得るには、invokedynamicを使用する必要がある場合があります。
トリュフを使うのは簡単なオプションだと思います。ASTインタープリターを作成するだけで、コード生成がすべて完了します。これは高性能オプションでもあります。Truffleバージョンとバイトコードバージョンが存在するすべての言語で、Truffleバージョンはバイトコードバージョンよりも確実に優れているだけでなく、バイトコード生成段階がないためシンプルです。
LLVMビットコードを発行してSulongで実行することはオプションですが、そのオプションにつながる他の制約がない限り、これはお勧めしません。この場合も、ビットコードの生成を自分で行う必要があります。ビットコードの設定後は最適化が制限されるため、ビットコードを発行する前に自分で最適化する必要があります。
Rubyはこれらのオプションを比較するのに適しています-JVMバイトコードを発行するバージョン(JRuby)、Truffleを使用するバージョン(TruffleRuby)、およびLLVMビットコードを発行するバージョン(Rubiniusですが、Sulongではそのビットコードを実行しません)があるためです。 。TruffleRubyは、RubiniusやJRubyよりも実装が高速で簡単だと思います。(私はTruffleRubyに取り組んでいます。)
あなたの言語が静的に型付けされているという事実については心配しません。Truffleは静的型を処理でき、プロファイリングの特殊化を使用して、静的に表現されるよりも実行時に、よりきめ細かい型を再度検出できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加