最適化されたツールチェーンの重要性は、Android 開発の世界で最もホットなトピックの 1 つです。 多くの人は、このタイプの 2 つの最大のプロジェクトである GCC と Linaro について聞いたことがあるかもしれません。 GCC は 1987 年にリリースされた古いプレーヤーですが、Linaro はわずか 4 歳の比較的若いプレーヤーです。
まず、これら 2 つのプロジェクトの歴史を見てみましょう。 前に述べたように、GNU Compiler Collection は古いものです。 長年にわたり、Android を含むさまざまなプロジェクトをコンパイルするために使用されてきました。 Google はバージョン 4.6 と 4.7 をデフォルトのツールチェーンとして使用することを決定しました。この一連のテストではバージョン 4.7 に焦点を当てたいと思います。
Linaro は 2010 年に発売され、ARM アーキテクチャ向けに最適化されています。 そしてもちろん、ARM は Android 搭載スマートフォンやタブレットの大部分で使用されています。 Linaro はカーネルまたは ROM 全体をコンパイルするために使用されるツールチェーンとして見つけることができ、多くの開発者はこのツールチェーンが GCC よりも高速で強力であると主張しています。
開発者管理者の Pulser_G2 に触発されて、私はこの通説を試してみて、これらの主張が真実かどうかを確認することにしました。 これを行うために、まず AOSP ソースをダウンロードしました。 私は、 aosp_mako-eng Google のデフォルトの事前構築セットを使用して、Nexus 4 のターゲットを設定します。 後 オタパッケージを作り、 183115481 バイトの zip ファイルをフラッシュする準備ができました。 その後、Linaro 4.7.4 ツールチェーンをダウンロードし、GCC を置き換えました。 prebuilts/gcc/linux-86. 最適化レベル O3 を設定するために必要な変更を実行しました。 AOSP は事前に構築されたカーネル (変更なし) のみをサポートするため、Linaro を使用して独自にカーネルを構築し、mako-kernel のカーネルを独自の BLOB に置き換えました。
以下に、結果として得られた 2 つのアーカイブを示します。 ご覧のとおり、Linaro アーカイブは少し大きいため、このツールチェーンは実際に bin フォルダーと xbin フォルダーに対して何らかの処理を行います。 カーネルファイル自体も大きくなります。
ただし、最も重要なのはファイル サイズではありません。 代わりに、パフォーマンスに焦点を当てましょう。 これを測定するために、AnTuTu ベンチマークを使用しました。 精度を高めるために、各テストを 3 回実行しました。 以下でわかるように、その違いはかなり大きいです。 ただし、結果はテストごとに異なるため、これらのテストを盲目的に信じすぎることはありません。 そうは言っても、Linaro は GCC よりも数ポイント優れていましたが、AnTuTu は皆さんが思っているほど信頼できるものではありません。
GCC
リナロ
ツールチェーンがグラフィックスのパフォーマンスに影響を与える可能性があるかどうかを確認するために、3DMark を使用して次のテストが実行されました。 その違いはAntutuよりもさらに顕著でした。 GCC では FPS がほとんど得られないかもしれませんが、全体的な滑らかさは Linaro の方が優れています。 スコアも若干高めです。
GCC
リナロ
最終テストは、Asfalt 8: Airborne ゲームを使用して実行されました。 以下に、両方のツールチェーンで実行されているゲームの 2 つのビデオをご覧ください。 1 つ目は Linaro で作成され、2 つ目は GCC で作成されました。 個人的には、Linaro は GCC よりも少し滑らかに感じると思いますが、これは二重盲検試験ではないため、単なるプラシーボ効果かもしれません。 どちらのカーネルもストックされており、パフォーマンスを向上させるための調整、オーバークロック、その他の派手な調整は行われていませんでした。
//www.youtube.com/embed/BZRZenaNr9A
では、リナロの方が優れているのでしょうか?
最初は懐疑的でしたが、少なくとも私のハードウェア構成では、GCC よりも Linaro の方が良い選択であると認めざるを得ません。 OS は、GCC を使用して構築されたときよりも応答性が高く、高速に感じられました。 ただし、GCC は依然として盤石であるため、究極の安定性が必要な場合には、GCC が依然として最良の選択となる可能性があります。
次のエピソードでは、SaberMod や Linaro 4.8 などの他のツールチェーンを比較してみます。 以下のコメント欄でお気に入りのツールチェーンについてお知らせください。 他のツールチェーンをテストしてほしい場合は、そのように言ってください。