*1notchained.hatenablog.comそれで、この記事はRからGoを使おうって話です。速度の比較をやりたいので、本記事ではフィボナッチ数列の関数を書いて比較します。※この記事は別に「みんなGoを使おうぜ」みたいな趣旨ではないです。Francois氏のブログにやり方が書いてあります。purrple.cat基本的な手順はGoでコードを書くsoファイルを作成するCでGOの呼び出す関数を書くそのCをRから呼べるようにするという感じです。ここでは3つの関数を定義しました。{}1個目・・・2をかけるだけの単純なコード2個目・・・愚直に思いついたようにフィボナッチ数列を書いたやつ。3個目・・・Go初心者ながらにいろいろ調べて速くしたやつ。始まってれば何でもいいです。Goの関数をラップするCの関数を書く。なるようにするとうまくいきました。作成され、Rから(Cを介して)Goの関数が使えるようになりました。関数でCの関数を呼び出します。102334155速度比較さあ、いよいよ本題。Goの関数とRの関数でフィボナッチ数列の速度を比較します。R側の関数は以下です。x[n]}速度比較用のコードは以下です。knitr::kable(microbenchmark:::print.microbenchmark(compare))comparemicrobenchmark:::autoplot.microbenchmark(compare)Goのほうがちょっとだけ速くなりました。このくらい単純なコードだとめっちゃさをつけるほうが難しいですが。結論たぶんものによってはGoのほうが速くなるんじゃないでしょうか。(マルチスレッド処理とか?)あとGoの場合はなんでもかんでも速くなるというわけではなく、「速く動く書き方で書けば速く動く」みたいな感じかなとやってて思いました。RomainがGoとRの連携するのを作る(ergoって名前だったっけ?)とかいってたけど、あれはどうなったんだろう。今回のコード今回のコードは全部、(遅くて速度検証用に使わなかったのも含めて)以下のGitHubに置いてます。github.comそれから今回Goで書いたコード、大きい数だと桁が溢れます。hoge.go-742723093263328478この辺をちゃんとやるには以下の記事とかが参考になりそう。覚えたら書く*1:余談ですが、僕はこの記事に関する発表をTokyo.Rで見た覚えがあるんですが、もう3年以上前のことなのですね。データ解析周りを中心に、プログラミング全般で学んだことを記していく個人的な備忘録。合同企画回)」に参加しました。reserved.はてなブログをはじめよう!songcunyouzaiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。