Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

ネイティブJavaScriptより高速に平方根を求めたかった

ルートを求めるプログラムを組んでみました。

どういうアルゴリズム?

二分探索にて絞り込んでいきます。原理は数学の授業でやった「ルート2は1.4より大きいけど1.5より小さい」というものです。あれを50回ほど繰り返してネイティブと同等のクオリティの値を返すようにしました。

ネイティブと同等のクオリティを出しています。ということはネイティブの代用とできるというわけです。しかし、まだ問題があります。速度の問題です。どちらが早いのかを検証してみました。

結果

メモ化を利用して省略などを駆使して私のできる最大の速度を出してみました。結果としてはルート2など整数の平方根を求めるときには同等程度(場合によっては勝ったり負けたりという感じです)、少数を求める場合は10倍程度差をつけられて負けました。やはりネイティブには負けます。勝てません。

おわりに

勝てるような気がしてました。だからこの結果はちょっと意外でした。まあ当然の結果ですかねw