直接のアドバイスではないのですが、高速化を探す方法について。 プログラムの処理の重さって人間の作業の時間と違って、まんべんなく時間を食うわけでなく、特定の一行や数行だけが処理時間のほとんどを占めてたりします。 なのでまずは、具体的にどの行がどれだけ時間を使ってるのか調べてみるのオススメです。 この場合ですと例えば、対象の行の範囲から一部分だけをコメントアウトして時間がどうなるかを見てみるとかになると思います。 パッと見た感じ、HSVとHSLの命令が怪しい気がします。 VとLはループを回す間変わらないので、ループの前に計算の一部を済ませたりできないでしょうか?