ベンチマークは、それ自体がアートフォームであり、通常は結果を操作して任意のものを表示するのは簡単です。私はコンパイラが非常に小さなテストケースを除いて同じ結果を生成するとは期待していませんし、時にはそれらの小さなテストケースでは、テスト結果が同じか、時には大幅に異なります。他にはない。
たとえば、dhrystoneを使ってそのようなもの(コンパイラのパフォーマンス番号)を追跡していましたが、既知のベンチマークの場合(dhrystoneはこれ以上意味がありませんでしたが)、コンパイラによってはおそらく他の何かを犠牲にしてベンチマークの下でよく見える。
正解はなく、普遍的な「最高」はありません。見る人の目の中に、あなたは皆です。どちらのツールを使うのが簡単ですが、GUIやかわいい色やサウンドカードの音などの方が好きですか?そこから行く。
私がテストしたアプリケーションの一般的なgnuコンパイラは、他のベンチマークと比較して "高速"なコードを生成しませんが、ウェブページやフォーラムの数や例のために。また、サイズ制限もありませんが、それ以上の学習が必要な場合があります。
cortex-msはarmv6mファミリとarmv7mファミリに分割され、v6m(cortex-m0)は少数のthumb2エクステンション、armv7mには約150個のthumbv2エクステンションがありますので、あなたのツールがサポートしているものを理解し、間違ったチップで間違ったものを使用する必要はありません。コンパイラはこれを知っていれば、同じソースコードから異なる命令ミックスを生成することができます。さらに、異なるコンパイル・オプションを使用して同じコンパイラまたはファミリ内では、大幅に異なるコードを取得できます。そして、それを超えてキャッシュを持つm4の場合は、キャッシュラインにコードがどのようにあるのかによって、パフォーマンスが大きく異なる可能性があるので、ベンチマークは各ブロブのためのリサーチプロジェクトですベンチマークするCコード単一のコンパイラ内のパフォーマンス範囲は、別のコンパイラをシャドウすることがあります。または、重複が問題ではない場合もあります。
あなたがツールにアクセスできるのであれば、競合するツールを使い、職場や職場内に入ることを学ぶことで、職業や歩き方に適したツールを選択することができますKielの家に入ってすぐに仕事をしたり、すぐに仕事をすることができます。あなたがgnuだけで、仕事がキールの家のためのものであれば、あなたは仕事を失うかもしれません。
あなたの主な関心事は学習ですか?それでは、なぜコンパイラのパフォーマンスが気になりますか? LinaroとYagartoはgccの2つのバージョン(異なるライブラリ)です。私は最後の[あなたにリンクした人](https://launchpad.net/gcc-armembedded)を選択します。スピード/サイズの数値は常に合成ベンチマークに基づいています。コードを作成して別のコンパイラでコンパイルします。一般に、あなたがコードする方法は、コンパイラよりも結果を反映します。つまり、異なる 'C'実装の同じアルゴリズムです。 –
私の主な関心事は明らかに学んでいますが、パフォーマンスは達成するのが悪いことではありません(そして多くの楽しみに取り組んでいます)。しかし、私は同じコードを別のコンパイラに持っていくというあなたの提案に従うでしょう。そして、私がもっとよく知っているものをチェックします。コメントありがとう –
質問は学習コンテキスト外でも同様に有効ですので、「学習している場合はどちらを選択するかは問題ではありません」と却下しないでください。私は学んでいませんが、私の質問は非常に似ています。たとえば、商用オプションがGNU ARMツールチェーンに比べてパフォーマンスやコードサイズの違いが大きいかどうかを知りたいと思います。 –