2006年12月13日 04:30 [Edit]

備忘録 - Intel Mac vs. GMP

GMP - The GNU MP Bignum LibraryをIntel Macでbuildするためのメモ。


結論だけ先に書いてしまうと、以下のとおりとなる。

tar jxvf gmp-4.2.1.tar.bz2
cd gmp-4.2.1/mpn/x86
rm *dive_1* */*dive_1* */*/*dive_1* */*mode1o* */*/*mode1o*
cd ../..
sh configure --build=i686-apple-darwin --enable-cxx
make
make check
sudo make install

方法としては、以下を抱き合わせた形。

GHC 6.6をインストールすると、/Library/Frameworks/GMPがついてくるので、それを無理矢理使うのもアリなのかも知れないけど、やはり普通に/usr/local/{include,lib}に関係ファイルがインストールされた方が潰しが利くので。

一旦Installしてしまえば、いろいろなところでご利益がある。例えばPerl 5でご利益を享受するには、Math::BigInt::GMPをCPAN Installするだけで、Math::BigIntを使っているコードがぐっと早くなる。

use strict;
use warnings;
use Time::HiRes qw/time/;
require Math::BigInt;

my $lib    = shift || 'Calc';
my $factor = shift || 1000;

Math::BigInt->import(lib => $lib);
warn Math::BigInt->config->{lib};

sub bfact{
    my $n = shift;
    my $mbi = Math::BigInt->new(1);
    $mbi->bmul($_) for (1..$n);
    return $mbi;
}

my $stated = time();
my $huge = bfact($factor);
bfact($factor)->bcmp($huge) == 0 or die;
warn "elapsed: ", time() - $stated, "s\n";
% perl mbibench.pl Calc 5000
Math::BigInt::Calc at mbibench.pl line 10.
elapsed: 11.2520761489868s
% perl mbibench.pl GMP 5000
Math::BigInt::GMP at mbibench.pl line 10.
elapsed: 0.628172874450684s

Enjoy!

Dan the BigNumbed


この記事へのトラックバックURL

この記事へのトラックバック
ZIGOROuさんのOpenIDの記事を読んで、Net::OpenID::Consumerをインスト...
MacBook AirにGMPをインストールする方法【Clouder::Blogger】at 2008年05月27日 18:16
で、Io languageとはまた関係ないんですが、GnuMPも OSXに入れる...
ついでに GnuMP on OSX【ラーダっぽい黒75の記】at 2007年02月27日 08:39