c#で明らかに遅いのは配列を使った計算。
ループの度に境界チェック等が入るのでロスが大きい。
これはunmanagedコードでポインターを使うようにすれば大幅に改善する。