PC版 SYSLAB blog  http://syslab.asablo.jp/blog/......

FRK-RX62N (7) rxc vs gnurx (2)
2011-04-09


確率で円周率を求めるモンテカルロ法を使って KPIT GNURX の Optimize と Library の違いによってオブジェクトのサイズや実行スピードがどのようになるか調べてみよう。
Optimize 設定はメニューの Build から KPIT GNURX [ELF] Tooolchain を選択し C/C++ タブの Optimization Type で決定する。 禺画像]
Library 設定はメニューの Build から KPIT GNURX [ELF] Tooolchain を選択し Library Generator タブの Select library で決定する。 禺画像]


結果をまとめたのが以下に示す表だ。
OptimizeLevel   なし      size    speed   both    単位
実行時間            11.72   6.85    6.60    7.03    秒       (Newlib ライブラリ)
ObjectSize      11004   9644    21010   20850   bytes   (Newlib ライブラリ)
実行時間            9.10    4.06   3.81    4.11    秒       (Optimized ライブラリ)
ObjectSize      7932    6574   17926   17778   bytes   (Optimized ライブラリ)
Optimize は size を選択するのがバランスが取れているようだ。 Library は、さすがに名前のとおり Optimized Library がスピード、サイズ共にいい感じだ。これからは Optimized Library を使って Optimize に size を指定するのをデフォルトにしよう。


一方、Renesas 純正コンパイラはどうだろう?
設定は細かくできて speed と size でそれぞれ0〜max まで指定できる。さらに、ライブラリの設定もあるのでこの辺でやめにしておく。
OptimizeLevel   0       1       2       max     
実行時間            11.72   9.97    4.02   3.95    秒       (size 優先)
ObjectSize      5738    5412    5014   5014    bytes   (size 優先)
実行時間            11.74   9.99    4.12    4.00    秒       (speed 優先)
ObjectSize      5738    5412    5032    5032    bytes   (speed 優先)
デフォルトで level2 なのでほぼ最強だろう。max にしてもスピード、サイズ共に変わらない。


こうしてみてみると Kpit GNURX はよくできている。しかし、問題点もある。新しいデバイスの追加が Renesas 純正より遅くなってしまうことだ。当然、自分で追加してみようと思った。やってみてわかったことは Renesas 純正のヘッダーファイルが使えないことだ。それは、ビットフィールドの並びが異なるためで、KPIT のヘッダーは手作業で(おそらく)書き換えてある。新しいデバイスごとに自分でこの作業をする気にはなれないので Kpit のリリースを待つか RX をあきらめるしかないと思っている。


環境: KPIT GNURX v11.01 Windows Tool Chain (ELF)
    Renesas C/C++ Compiler Package for RX Family V.1.00 Release 02
[RX]
[マイコン]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット