2010-11-27 12 views
0

私たちが知っているように、Cコードは、次のような異なる方法でjavabytecodeに変換できます。 - まず、CコードをJavaソースコードに変換し、Javaコンパイラを使用してバイトコードに変換します。第2に、cをMIPSバイナリに変換し、次にMIPSをバイトコードに変換します。Axiomatic Ansi Cコンパイラは、cソースコードをjavabyteコードに直接変換しますか?

両方とも実行時にオーバーヘッドが加わるため、プロジェクトで使用したいAxiomatic Ansi Cコンパイラの方法を知りたいと思います。私はより速い方法が必要です。他の代替案を教えてください。 あなたの努力に感謝します。

+0

スピードを上げたい場合は、パフォーマンスを測定するだけです。 Axiomaticコンパイラがバイトコードへの直接変換を行っても(実際のダイレクト定義では)、実際に試したアプローチよりも速くなることは保証されません。 –

答えて

0

グーグルで、私は以下の点に上陸したJVMについてのある程度の知識の後:公理Cコンパイラによって生成されたJavaバイトコードを

、効率的ではありません。その代わりにNestedVMCibylはどちらも、MIPSバイナリをコンパイルし、バイナリをJavaバイトコードに変換することによって動作します。そして、それは効率的です。主な問題は、複数のステップで実行する必要がある8,16バイト値のメモリアクセスです。

NestedVMとCibylのパフォーマンス特性は少し異なりますが、Clustylは通常、整数負荷のワークロードでは高速ですが、NestedVMは浮動小数点演算を処理し、倍増します。これは、シビルがGCCのソフトフロートサポート(実際のJavaバイトコード浮動小数点命令を使用しています)を使用し、NestedVMがMIPS FPU命令を変換するためです。

私の推測では、Axiomatic Cコンパイラの代わりに、どちらかの方が運がよかったでしょう。

関連する問題