[perl]32bit/64bitでメモリ使用量違うけど
Posted on 11月 12, 2009
Filed Under perl |
同じperlのコードを、2台の違うサーバで動かした時に、やたらメモリ量が違うなぁと。
サーバ1: 50MBくらい
サーバ2: 200MBくらい
なんでだろと調べる
サーバ1で
CODE:
-
perl -V
-
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
-
Platform:
-
osname=linux, osvers=2.6.26-1-686, archname=i486-linux-gnu-thread-multi
-
...
-
use64bitint=undef, use64bitall=undef, uselongdouble=undef
-
...
-
Compiler:
-
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
-
optimize='-O2 -g',
-
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
-
ccversion='', gccversion='4.3.2', gccosandvers=''
-
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
-
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
-
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
-
alignbytes=4, prototype=define
サーバ2で
CODE:
-
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
-
Platform:
-
osname=linux, osvers=2.6.26-1-vserver-amd64, archname=x86_64-linux-gnu-thread-multi
-
...
-
use64bitint=define, use64bitall=define, uselongdouble=undef
-
...
-
Compiler:
-
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
-
optimize='-O2 -g',
-
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
-
ccversion='', gccversion='4.3.2', gccosandvers=''
-
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
-
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
-
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
-
alignbytes=8, prototype=define
longsize, ptrsizeとかが違う
32bit → 64bit!
モジュールをuseした際のメモリ使用量(増加量)を調べてみるで紹介されていたGTopのスクリプトを使ってみる
サーバ1で
CODE:
-
% script/gtop.pl 'use Catalyst'
-
10.5M : use Catalyst
-
% script/gtop.pl 'use DBIx::Class'
-
396k : use DBIx::Class
-
% script/gtop.pl 'use Moose'
-
Moose does not export its sugar to the 'main' package.
-
4.6M : use Moose
fmfm
サーバ2で
CODE:
-
% script/gtop.pl "use Catalyst"
-
42.6M : use Catalyst
-
% script/gtop.pl "use DBIx::Class"
-
920k : use DBIx::Class
-
% script/gtop.pl "use Moose ()"
-
17.9M : use Moose ()
!!!
搭載してるメモリ量は4GBとかで変わらないから、
リスクが無ければ32bitでコンパイルしたperlを使ったりするもんなのだろうか?
Comments
Leave a Reply