Как стать автором
Обновить

Комментарии 5

Это бы расширение да встроить бы в ядро php из коробки! Ведь бывает нужен быстрый просто массив для чисел с минимальным потреблением памяти.
SPL массивы почему-то не быстрее, даже в php7, и улучшение по памяти еле заметно — habrahabr.ru/post/257237/#comment_8415927
Ну, SPL массивы в версиях 5.x потребляют значительно меньше памяти, чем стандартный массив, потому что хранят только указатели на zval (но потому и медленней, чем массив из статьи). А в PHP7 сильно оптимизирован как раз стандартный массив.

Добавил SPL к сравнению:

Array
TIME: 0.33361291885376
MEMORY: 137.51734924316

SPL Array
TIME: 0.22358512878418
MEMORY: 61.035980224609

JCO\Darray
TIME: 0.18323588371277
MEMORY: 11.444686889648
Да, в таком простом тесте 3v4l.org/JeZZr SplFixedArray немного быстрее простого массива и меньше по памяти в 3.8 раза в php7, но медленее в HHVM,
Но в примерах из реальной жизни, например загрузка значений из базы в многомерный массив 3v4l.org/8QZcN для последующей их обработки, SplFixedArray и в 5.6.x, и в php7 лишь на 25% лучше по памяти и не быстрее, а даже медленнее ассоциативный массив со строкой в качестве ключа!
То есть доступ к массиву в php7, созданному в виде
$a[]=array(«thisIsVeryBigKeyName0»=>0,«thisIsVeryBigKeyName1»=>1);
в два раза быстрее чем к массиву, созданному через
$a[]=array(0=>0,1=>1); или к массиву, созданному через
$b=new SplFixedArray(2); $b[0]=0;$b[1]=1;
Как это понимать?
Не успел изменить комментарий, повторный запуск 3v4l.org/8QZcN показал что SplFixedArray и все другие виды массивов примерно одинаковы по скорости в php7 и php5.6.x, абзац про «в 2 раза медленнее» видимо был вызван кратковременным всплеском нагрузки на 3v4l.org
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории