実体験

フィボナッチ数列とは

フィボナッチ数列とは
さきほどのアルゴリズムでは n = 50 のフィボナッチ数を求めるには途方もなく時間がかりますが、このアルゴリズムでは一瞬です。おそらく n = 10000 でもまだ余裕です。n = 100000 くらいになると少し遅くなってくるのではないでしょうか。

フィボナッチ数 -->

> > This page is based on a Wikipedia article written by contributors (read/edit).
Text is available フィボナッチ数列とは under the CC BY-SA 4.0 license; additional terms may apply.
Images, videos and audio are available フィボナッチ数列とは under their respective licenses.

Tell your friends about Wikiwand!

Suggest as cover photo

Would you like to suggest this photo as the cover photo for this article?

Thank you for helping!

Your input will affect cover photo selection, along with input from other users.

Thanks フィボナッチ数列とは for reporting this video!

This browser is not supported フィボナッチ数列とは by Wikiwand :( フィボナッチ数列とは
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

An extension フィボナッチ数列とは you use may be preventing Wikiwand articles from loading properly.


If you're using HTTPS Everywhere or you're unable to access any article on Wikiwand, please consider switching to HTTPS (https://www.wikiwand.com).

An extension you use may be preventing Wikiwand articles from loading properly.

If you are using an Ad-Blocker, it might have mistakenly blocked our content. You will need to temporarily disable your Ad-blocker to view this page.フィボナッチ数列とは

Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install

フィボナッチ数列とは

スクリーンショット 2016-09-06 11.44.38

再帰使わない

スクリーンショット 2016-09-06 11.57.41

Golangのsliceを使って実装しています。こうすれば再帰は使わずに実装できますね
ではベンチマーク行ってみましょう

ループの回数を減らしてみる

今までは i 分だけ回してましたが、 i/2 分だけにしてみましょう

スクリーンショット 2016-09-06 12.01.13

だんだん読みづらくなってきました…
ベンチマーク行ってみましょう

17.4ns!!どんどん早くなって行ってますね
ここまでは自分で工夫して行きましたがそろそろ限界なのでいろいろ調べてみましょう

Golangのパフォーマンスチューニング

  • メモリのアロケーション回数を減らす
  • 要素数が事前にわかっている場合には append を使わない
  • channel を使わない
  • 関数(メソッド)を呼ばない

などなど…
いろいろ調べましたが、今回のコードで悪いところといえばsliceを使っているところですかね?(本来はトリニボッチとかに対応するためにsliceにしたのですが…)
ではこれをただのIntの変数に変えてみましょう

これが一番早いと思います

スクリーンショット 2016-09-06 12.09.36

見る限り爆速そうですね(適当)
ではベンチマークしてみましょう

え?5.20ns?めちゃくちゃ早くなった!!!!
やっぱり毎回sliceでアクセスするのは遅いですね(というかsliceの値にアクセスするのに%演算子要らなくないか…?)

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる