Обманывание целых чисел PHP

Это касается моего сообщения здесь, но в совершенно другом направлении. Определение Charset в PHP

По сути, я ищу, чтобы уменьшить память, которую вызывает множество огромных массивов.

Эти массивы просто полны целых чисел, но, видя, что PHP использует 32-битные и 64-битные целые числа внутри (в зависимости от того, какую версию вы скомпилировали для вашего типа процессора), он ест память.

есть ли способ обмануть PHP в использовании 8-битных или 16-битных целых чисел?

Я думал об использовании пакета (); для этого я могу иметь массив упакованных двоичных значений и просто распаковывать их по мере необходимости (да, я знаю, что это сделает его медленнее, но намного быстрее, чем альтернатива загрузки, а затем выполняется через каждый массив по отдельности, поскольку вы можете передавать текст, так что все они должны быть в памяти одновременно, чтобы ускорить)

можете ли вы предложить какие-либо альтернативы для достижения этого? Я знаю, что это очень хаки, но мне нужно предотвратить огромные всплески памяти.

Related of "Обманывание целых чисел PHP"

Не говори никому!

class IntegerstringArray IMPLEMENTS ArrayAccess { var $evil = "0000111122220000ffff"; // 16 bit each function offsetExists ( $offset ) { return (strlen($this->evil) / 4) - 1 >= $offset; } function offsetGet ( $offset ) { return hexdec(substr($this->evil, $offset * 4, 4)); } function offsetSet ( $offset , $value ) { $hex = dechex($value); if ($fill = 4 - strlen($hex)) { $hex = str_repeat("0", $fill) . $hex; } for ($i=0; $i<4; $i++) { $this->evil[$offset*4+$i] = $hex[$i]; } } function offsetUnset ( $offset ) { assert(false); } } 

Таким образом, вы можете в значительной степени создать объект массива из этого:

 $array = new IntegerstringArray(); $array[2] = 65535; print $array[2]; 

Он внутренне сохраняет список и принимает 16-битные целые числа. Смещения массива должны быть последовательными.

Не испытано. Как руководство по внедрению.