43

私はGolangを調査してきましたが、コンパイラーが搭載されていることがわかりました。しかし、それはGoをアセンブリレベルのコードにコンパイルするのですか、それとも単にBYTECODESに変換してから、そのコンパイルを呼び出すのですか?つまり、PHPでも、バイトコードに変換してパフォーマンスを向上させることができます。Golangはシステムレベルのプログラミングとコンパイルの代替品ですか?

4

2 に答える 2

67

これは実際にはコンパイラであり(実際には2つのコンパイラが組み込まれています)、完全に自給自足の実行可能ファイルになります。サーバー上で実行するために、補助ライブラリやランタイムは必要ありません。ターゲットコンピュータアーキテクチャ用にコンパイルする必要があります。

ドキュメントから:

2つの公式のGoコンパイラツールチェーンがあります。このドキュメントでは、gc Goコンパイラとツール(6g、8gなど)に焦点を当てています。GCCバックエンドを使用する従来のコンパイラであるgccgoでの作業方法については、「gccgoのセットアップと使用」を参照してください。

Goコンパイラは、3つの命令セットをサポートしています。アーキテクチャが異なれば、コンパイラの品質にも重要な違いがあります。

amd64(別名x86-64); 6g、6l、6c、6a 成熟した実装。コンパイラーには効果的なオプティマイザー(レジスター)があり、優れたコードを生成します(ただし、gccgoの方が著しく優れている場合もあります)。

386(別名x86またはx86-32); 8g、8l、8c、8aamd64 ポートに相当します。

アーム(別名ARM); 5g、5l、5c、5aLinux バイナリのみをサポートします。他のポートほど広く使用されていないため、十分にテストされていません。

低レベルのオペレーティングシステムインターフェイスコードなどを除いて、ランタイムサポートはすべてのポートで同じであり、マークアンドスイープガベージコレクタ、効率的な配列と文字列のスライス、およびスタックなどの効率的なゴルーチンのサポートが含まれます。必要に応じて拡大および縮小します。

コンパイラーは、FreeBSD、Linux、NetBSD、OpenBSD、OS X(Darwin)、およびWindowsオペレーティングシステムをターゲットにすることができます。サポートされている組み合わせの完全なセットは、以下の環境変数の説明にリストされています。

サーバーでは、通常、プラットフォームをターゲットにしamd64ます。

Goはコンパイルの速度でよく知られていることに注意してください。サーバープログラムを展開するとき、開発用コンピューターでさまざまなプラットフォーム用にビルドしません。ソースを展開し、運用サーバーで直接コンパイルします。Go1以降、あるプラットフォームでコードをコンパイルしたり、他のプラットフォームでコードをコンパイルしたりすることはありませんでした。

Windowsでは、開発用コンピューターで作成し、Goに関連するものをインストールしたことがない人exeにこれを送信するだけで問題はありませんでした。exe

于 2012-09-03T13:47:42.857 に答える