« 部品実装とテスト | トップページ | 就活&封印宣言 »

コンパイラーの最適化性能

現在、SH7144でモーターコントローラーを作っていると話しました。
今回は趣味のロボットと違って、研究の時間をフルに使えるのでどうせならと、コンパイラーの乗り換えをしました♪

今まで私は一貫してロボット開発にBestTechnologyのGCC DEVELOPER LITE (以下、GDL)を用いてきました。
使い続けてきた一番の理由は、簡単だから。細かな設定が不要で簡単にソフト書けます。今まで、H8/3052だけではなく、SH7144の開発もGDLで行ってきました。
しかし、いろいろ不満があって、結局GDLからルネサスのマイコン開発環境であるHigh-performance Embedded Workshop (以下、HEW)に乗り換えました。(不満の中身については長くなるので省略します)

HEWに乗り換えた感想としては、とにかくコンパイルしたソフトの動作が速いこと。
C言語で書いたソフトを、機械語に翻訳するときにコンパイラで最適化が行われるのですが、そのときの最適化のレベルが半端じゃなく高いです。さすが公式のコンパイラ。
GDLからHEWに乗り換えたときの衝撃は、H8/3052からSH7144に乗り換えたときと同じぐらいの衝撃がありました。
イメージで言うと鈍行電車から新幹線へ乗り換えた感じですね。

今までGDLでコンパイルしてきたLEDの点滅プログラムを、HEWでコンパイルしたところ、点滅が早すぎで肉眼で確認するのが困難でした。
このプログラムでは、時間待ちを以下のような関数で行っていましたが、修正を余儀なくされました(笑)

↓旧バージョンのプログラム@GDL
void wait_long(long t)    /* 時間待ち関数    */
{
  while(t--);
}

↓同じ時間を稼ぐのに必要な新バージョンのプログラム@HEW
void wait_long(long t)          /* 時間待ち関数    */
{
  int ii = 0;
  t*=4;
  while(t--){    //HEWコンパイラの強力な最適化のせいで、複雑な処理をしないと時間を稼げないw
    ii++;
    ii--;
  }
}

高性能なコンパイラに出会えて、これからプログラミングしていくのが楽しみです。

|

« 部品実装とテスト | トップページ | 就活&封印宣言 »

ロボット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1213530/33011503

この記事へのトラックバック一覧です: コンパイラーの最適化性能:

« 部品実装とテスト | トップページ | 就活&封印宣言 »