30日でできる!OS自作入門パート8(13日目)
今回のテーマは『タイマ-2』ということで12日目の続きになります。
30日のうち2日もタイマに費やすとは長くないか?と思いましたが、どうやら今後タイマをよく使うらしくそのためしっかり作りたいようです。同じような理由でレイヤーの制御(本書では下じき制御)も頑張っていたそうです。
タイマ2となっていますが、今回はここまで書いたタイマ機能の改良になります。繰り返し出現するコードを共通化してまとめたり、if文の判定を改良したりそういう修正です。
ただ修正して「なんとなく早くなったかなー」では自己満足になってしまうので性能を数値として性能を測定してみます。
性能測定
やり方は簡単でまず修正前のソースでカウントを実行して10秒経ったらどれだけカウントできたか確認するという方法です。修正前と修正後でそれぞれ5回実行して平均を見てみました。筆者は最初エミュレータで実施しましたが5回の中でも結構誤差があったため実機でも試していました。エミュレータでの最大値と最小値の差は10575であったのに対し、実機は177なのでかなり違いました。
結果、修正前の平均は74643595に対し修正後の平均は74619985ということで23610だけ速いということになりました。はい。
さらに改良
さてさらに改良していきます。FIFOバッファを見直したり番兵とよばれるリストの終端を表す仕組みを取り入れたりしました。
バッファや割り込みを改良したことで先ほどの値より1.3~1.7倍ほど数値はよくなりましたが番兵を使ってもあまり変化がなかったことが筆者は不満なようです。確かにこの仕組みを取り入れると無駄がなくなるのでよさそうな感じですがなぜでしょう?ということで今回は終わっております。
終わりに
自分で作ったソースを改良するというのは仕事でプログラミングをしているときも作りながらよく考えますよね。プログラムを改良することに一生懸命になってしまい納期がギリギリになってしまうこともありますがそれだけ楽しい作業だし改良してすっきりしたソースになるととても満足します(自己満足ですが)。
このように開発作業を読んでいるとやはり自分でも作ってみたくなりますね。最後まで読んで自作OSを自分で始めから作ってみたいです。