さまざまなC/C++コンパイラでは、最適化を制御するために#pragma
があります。GCC 4.1.1でファイル内の個々の関数を最適化する方法は何ですか?
たとえば、次のように純粋にパフォーマンス上の理由から
のCodeWarrior
#pragma optimization_level 0
void func_no_opt()
{
// Some Work - not optimized
}
#pragma optimization_level 3
void func_full_opt()
{
// Some Work - optimized
}
MSVC
#pragma optimize("g", off)
void func_no_opt()
{
// Some Work - not optimized
}
#pragma optimize("g", on)
void func_full_opt()
{
// Some Work - optimized
}
#pragma optimize("", on)
void func_default_opt()
{
// Some Work - default optimizations
}
、私が構築し、すべてに最適化する必要がある機能のカップルを持っています他の点では最適化されていないデバッグビルドも含まれます。
GCC(特に4.1.1)に、他のコンパイラと同様のやり方がありますか?残念ながら、GCC 4.4はターゲットプラットフォーム(プロプライエタリハードウェア)ではサポートされていないため、最適化属性(__attribute__((optimize(...)))
)を使用できません。
また、このターゲットプラットフォームのツールチェーンには、自動一括作成ツールがあります。コンパイルやリンク速度の向上のために、プロジェクト内のファイルを自動的に組み合わせることができるため、機能を別のファイルに分割して最適化パラメータを変更することもできません。私は分割されたメソッドを実行するために、それらの関数のライブラリを別々に作成し、リンクさせる必要があります。これは価値があるよりもかなり痛いかもしれません - 特にこれを達成する簡単な方法がある場合。
Ugghhで説明するように、あなたは、最適化のプラグマを使用することができます..私はもっと簡単な方法があるだろう期待していました。私はGCC 4.4 :-( – Adisak