UrJTAGをプロファイルしてみた.

そんなこんなでプロファイル開始.改めてソースコードを読み返してみる.辞書検索がことごとくリニアサーチであることに気がついて目眩がする.
律儀に malloc/free/realloc を繰り返す構造に頭痛がしてくる.

とりあえず,cx_cmd_t の確保でメモリプールを作ってみたら,プロファイラ上では一気に数値が改善された.やっほー.ちょっとした修正でみるみる改善されるので,リファクタリングのし甲斐がある.

でも,ボトルネックの大半はどうやらアプリよりも下の層.

どうやら実行時のリソースの状態に依存して,実行時間が大きくブレるらしい.先日の計測では 10240バイト書込み時に 15.5秒(σ=0.388)だったものが,今日は同じバイナリを使って 17.7秒(σ=1.017).
この程度の書込み量で2秒も違うとは….

リファクタリングはする甲斐があるけれども,スピードアップに繋がらないのであれば,本家に採り込んでもらえる可能性は低いかもしれないなぁ….

改善方針

うーむ.困った.

ファームは送り込みたくない.環境毎にファームが要るというのが,VDSP++やICEbearの欠点だと思っているので.

しかし,この速度差は堪え難い.堪え難い.

読み込みだけEMUIR/EMUDATを使うというのは思いつく.でも,連続した領域の読み書きでなければ,EMUIR/EMUDATのメリットは薄くなる.書き換えても現状と変わらないか,下手すると遅くなるかも.…それでも,一応は検討してみるか……僅かな希望だけれども.