Vala で生成されたコードは、通常の手書きの C コードのように最適化されていますか? GObject システムを使用しない場合にパフォーマンスのオーバーヘッドはありますか?
注: 私の次の C プロジェクトでは、Vala を使用するかどうかを調べています。このプロジェクトは GUI アプリケーションではなく、プラットフォームに依存しないインタープリターのようなアプリケーションです。コンパイラとして gcc を使用しています。
それは、あなたが C を書いて何をしたかによって異なります。特に:
[Compact]
ます。これにより、仮想メソッドなどの多くの機能が失われますが、はるかに高速になります。これには、C で記述されたオブジェクトよりもオーバーヘッドがわずかに大きくなりますが、スレッドセーフな参照カウントと、通常の C プログラマーが気にしない他のいくつかのことが伴います。if
は C よりも驚くほど高価になることはありませんif
。strdup
が自動的に呼び出されます。これは、生成された Vala がこれらの小さな一時的なオブジェクトをより多く作成することを意味しますが、それが本当に問題である場合は、慎重unowned
に作成を制限するために使用できます。Vala コンパイラで生成されたコードは、GObject ライブラリを使用します。GObject を回避する必要がある場合は、vala パーサーを使用して vala コードを解析しますが、生成されたコードでは GObject を使用しない aoop コンパイラを使用することをお勧めします。
Aroopコンパイラは、オブジェクトの作成と操作用に最適化されたオブジェクト プールを使用するコードを生成します。オブジェクトのコレクションには、データ指向の機能があります。たとえば、非常に効率的な方法でオブジェクトをトラバースしながら、オブジェクトにフラグを立てたり、フラグを選択したりできます。オブジェクトはすべて、メモリの場所の観点から近い距離にあります。
aoop コンパイラは、独自の GUI を持たないshotodolプロジェクトを作成するために使用されます。モジュールとプラグインシステムがあります。サーバー アプリケーションを作成できるコマンド ライン インターフェイスを備えています。ショットドルを利用したサーバーアプリケーションの例は、ここにshotdol_webとして存在します。このプロジェクトが好きな人は、プロジェクト ページで問題を共有してください。