Anti Aliased Line チューニング

更に以下の修正を行った。

  • 座標計算処理の無駄を省く。
  • 固定小数点演算を利用

6/13のに比べると約9倍くらいの速度になった。これでまぁ並くらいのスピードなんだろうか。。これ以上の最適化は個人的にもうやりたくない。。

http://www.geocities.co.jp/SiliconValley-Sunnyvale/6769/dmd/graphictest040620.cab

固定小数点型をD言語のtemplate structで実装したんだけれど、色々と問題を実感。

  • 固定小数点の為に数値のrangeが狭まる。(実装方法によってはある程度解消できるものだろうけれど)
  • template型と組み込み型のgapを埋めきれない。
    • structは宣言時の代入が出来ないが、関数を利用して解決すると基本型と構文に違いが生まれてしまう。
    • 標準ライブラリに備わっている基本型を引数と処理する各関数等を、新規に作成したtemplate struct型に対応させる為のadapterとなるtemplate moduleの作成が面倒。
    • cast operatorが1つしか定義出来ないので、基本型←→template struct型の相互変換が自然に出来ない。
    • opCmpがバグ有り。
    • templateを多用するとsimbolが膨らんでいく為、コンパイル時のoptionで-gtをつけると作られるtrace profiling hooksの生成に失敗する。

いくつかの記述上の問題は、templateを1段深くしてそこで特殊化を行えば解決するかもしれないけれど、見通しが悪くなる。