dav*_*010 5 php memory memory-management
背景:我有一个大的2D整数数组,我需要在PHP中为每个Apache请求加载到内存中.我希望它占用更少的内存.
PHP以PHP_INT_SIZE
字节为单位存储整数,在大多数系统上为32位.所有整数都小于2 ^ 16,这意味着它们可以是一个短整数(例如在C中).我是否正确地认为将short存储为short会占用一半的RAM?
理想情况下,我希望能够做到:
$s = (short) 1234; // takes up 2 bytes instead of 4
Run Code Online (Sandbox Code Playgroud)
更多信息:
一些疯狂的想法:
我不会推荐最后一种方法。:-)
为了快速解决方案,我将使用以下方法将 2 个整数打包为 1 个 PHP 整数:
$big = $int1 + ($int2<<16);
And uppack as:
$int1 = $big & 65535;
$int2 = ($big>>16) & 65535;
Run Code Online (Sandbox Code Playgroud)
另外,对使用共享内存表示赞赏。这将使您的应用程序更快。