2012過去記事の宣伝を繰り返しているのもアレなので、そろそろ新作投下します。ネタがないのでとりあえず2つだけ。改善前は円形での判定、改善後は正方形での判定になっていてそもそも全然違うコードですが、気にしたら負けです。それっぽく当たり判定ができれば形状なんてどうでもいいのです。円形で判定する場合、2点の距離を出すために2乗を計算する必要があります。そのために変数への代入が生じ、容量が膨らんでしまいます。改善後のコードはabs関数の引数部分に一度書くだけでよいので、変数代入を省くことができます。一般に関数呼び出しはコストが大きいので避けたいところですが、使い方によっては逆転することもあるのです。容量削減の理由は説明しましたが、そもそも改善後のコードがなぜこれで当たり判定できているのか分かりにくいかもしれません。この判定方法はいつでも使えるわけではなく、Rの値が2n-1のときだけ使えます。X方向の距離とY方向の距離のうち、両方がnビットの範囲内に収まれば当たっていると判断します。改善前のコードにも利点はあります。dx)と記述できるので、サイズが逆転するのです。臨機応変に適切な書き方を使いましょう。改善前のコードは一見効率が良さそうですが、致命的な問題があります。それは、qgetgroup命令を使っていることです。拡張プラグインの命令は、コード中で一度でも利用するとその定義が組み込まれます。その1にすら劣ってしまいます。その2では3回記述していた部分をループにすることで順当に削っています。