背景:对于每个Apache请求,我需要将大量的2D整数数组加载到PHP的内存中。我希望它占用更少的内存。
PHP将整数存储在PHP_INT_SIZE
字节中,在大多数系统中为32位。所有整数均小于2 ^ 16,这意味着它们可以是short int(例如,在C中)。我是否认为存储ints会占用一半的RAM是正确的?
理想情况下,我希望能够做到:
$s = (short) 1234; // takes up 2 bytes instead of 4
更多信息:
一些疯狂的想法:
最佳答案
我不建议使用最后一种方法。 :-)
为了快速解决方案,我将使用以下命令将2个整数打包为1个PHP整数:
$big = $int1 + ($int2<<16);
And uppack as:
$int1 = $big & 65535;
$int2 = ($big>>16) & 65535;
另外,BIG赞成使用共享内存。这将使您的APP更快。