フィボナッチ数を求める関数、Perlで書いたのをそのままC++にしたら200倍速くなったw

C++で多倍長整数ライブラリGMPを使う - 簡潔なQ
↑を参考に(そのままだ)、
Perlで算数 フィボナッチ数 - べれ野日記
↑をC++で書きなおした。

#include <iostream>
#include <gmpxx.h>

mpz_class fib(int max){
  mpz_class n,m,f;
  n = 1;
  m = 1;
  for(int ii=0; ii<max; ii++){
  	f = n + m;
  	n = m;
  	m = f;
  }
  return n;
}
int main(int argc, char** argv){
  if(argc < 1){
	return 0;
  }
  std::cout << fib(std::atoi(argv[1])) << "\n";
  return 0;
}

$ time ./fib.pl 100000
// 中略
real 0m42.803s
user 0m42.812s
sys 0m0.016s

$ time ./a.out 100000
// 中略
real 0m0.214s
user 0m0.208s
sys 0m0.004s

Perl版42.8秒、C++版0.2秒、およそ200倍のスピードアップとなりました。
すげえ。ロジックは同じだと思うんで言語差がまるまる出た形。