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