普通は、vtuneやuprofみたいなツールを使ってISAレベルでベンチマークのホットスポットを分析するよ。ARM用のそんなツールについては全然わからないけど。 > アーキテクチャ特有のアセンブリの代わりに手書きのコンパイラ中間表現(LLVM IR)を書く意味ってあるのかな?私の経験では、あまりないね。手書きのアセンブリを結構やったけど、それはアーキテクチャ特有の問題に対処する時だけだよ。他のことはCで書けばいいし(Cのセマンティクスで表現できないエッジケースに当たることもあるけど、それは稀だし)。例えば、CやC++のコンパイラは、一般的に最適化されたコードを書くのが本当に得意なんだ。彼らが苦手なところは、ベクトル化されたコードみたいに、アルゴリズムを再設計して高速なベクトル命令を使えるようにする必要がある場合で、そうなったらコンパイラのインストリンシックを使わなきゃいけないし、それでもコンパイラのインストリンシックが悪いコード生成につながることもある。だから、結局はアセンブリで書くことになって、レジスタの割り当てやアウトオブオーダー命令みたいなコンパイラが気にすることについて賢くなる必要があるんだ。でも、この領域に入ると、手書きのアセンブリがコンパイラが出力するものより「良い」かどうかを一目で判断するのは無理なんだよね(「良い」の基準は人それぞれだけど)。測定してベンチマークを取らないといけないし、そのベンチマークは意味のあるものでなきゃダメなんだ。