処理時間の計測
Windows等の非RTOS向けのプログラムに比べると、
vxWorks等のRTOSのプログラムってのは、
処理時間がものすごくシビアだったりします(^-^;
そんなわけで、
いかに可視化されたキレイなコードで、処理時間の最適化を行うのか?
ってのが重要になってきます。
そこで、処理時間を計測するためのAPIをいくつか紹介してみます。
これらのAPIはプラットフォームに依存して使用可否が決まってきたりするので、その辺も含めて。
time()
[プラットフォーム]
・Windows ・・可
・Linux ・・・可
・vxWorks ・・可
[精度]
・秒(sec)
[参考]
http://www9.plala.or.jp/sgwr-t/lib/time.html
gettimeofday()
[プラットフォーム]
・Windows ・・不可
・Linux ・・・可
・vxWorks ・・不可
[精度]
・マイクロ秒(μsec)
[参考]
http://www.argv.org/~chome/blog/noisefactory/2008/02/gettimeofday.html
clock()
[プラットフォーム]
・Windows ・・可
・Linux ・・・可
・vxWorks ・・可
[精度]
・システムクロックに依存(※)
[備考]
・Windowsでは、計測を開始した時刻から終了した時刻までの時間を計る。
・Linux/vxWorksでは、実際にCPUを使用していた時間を計る。
お試し版でsleep()を使用してみたところ、後者では処理時間が計れなかった。
tickGet()
[プラットフォーム]
・Windows ・・不可
・Linux ・・・不可
・vxWorks ・・可
[精度]
・システムクロックに依存(※)
[参考]
http://www.vxdev.com/docs/vx55man/vxworks/ref/tickLib.html
https://supportforums.cisco.com/docs/DOC-31076
vxTimeBaseGet()
[プラットフォーム]
・Windows ・・不可
・Linux ・・・不可
・vxWorks ・・可
[精度]
・ナノ秒(nsec)
[参考]
http://borkhuis.home.xs4all.nl/vxworks/vxw_pt2.html
※システムクロックとはtick値(1秒当たりのクロック数)のことで、以下で定義されている。
time.hにdefineされているCLOCKS_PER_SECの値。
なおvxWorksでは60がセットされていた。
(例)
CLOCKS_PER_SEC=1 ・・・1tick=1秒
CLOCKS_PER_SEC=60 ・・・1tick=1/60秒
この辺の話はWeb上にいくらでも転がっているので、詳細はそっちのサイトを見てもらうとして。。。
同じような話をあっちでもこっちでもーーってやるのは非効率かと判断しました(^-^;
(手を抜いただけだったりして;;