maaash.jp

what I create

Math::Random::MT benchmark

randのばらつき方が均等になる、という理由でMath::Random::MTが使われているようです。(身近で

macにXS版を入れようとすると

1
2
3
4
5
6
7
8
9
10
11
12
In file included from _mt.c:1:<br />
mt.h:17: error: expected specifier-qualifier-list before ‘uint32_t’<br />
mt.h:21: error: expected ‘)’ before ‘seed’<br />
mt.h:22: error: expected ‘)’ before ‘*’ token<br />
_mt.c:17: error: expected declaration specifiers or ‘...’ before ‘uint32_t’<br />
_mt.c: In function ‘mt_init_seed’:<br />
_mt.c:20: error: ‘uint32_t’ undeclared (first use in this function)<br />
_mt.c:20: error: (Each undeclared identifier is reported only once<br />
_mt.c:20: error: for each function it appears in.)<br />
_mt.c:20: error: ‘mt’ undeclared (first use in this function)<br />
_mt.c:22: error: ‘struct mt’ has no member named ‘mt’<br />
_mt.c:23: error: ‘seed’ undeclared (first use in this function)<br />

っていうようなエラーがでてmakeがこけるところは、

1
2
3
4
5
6
7
8
9
10
#if defined(_MSC_VER) && (_MSC_VER < = 1300)<br />
typedef unsigned __int32 uint32_t;<br />
#elif defined(__linux__) || defined(__GLIBC__) || defined(__WIN32__)<br />
#include <stdint.h><br />
#elif defined(__osf__)<br />
#include <inttypes .h><br />
#else<br />
#include <sys /types.h><br />
#endif<br />
</sys></inttypes>

このifdefがうまくいってないようだったのでとりあえず

1
#include <inttypes.h>

と手で書いてあげたりするとうまくmake && make testが通るようになりました この辺はどう書くのが鉄板なんでしょうね?

ということでベンチマーク

ここがボトルネックになることはあまり無いとは思いますが。

Comments