1) Стандартная сериализация serialize
2) JSON
3) msgpack
4) igbinary
Кратко об установке.
JSON раньше шел в стандартной поставке php. Сейчас нужно поставить дополнительное расширение php5-json.
msgpack
Сайт: http://msgpack.org/
Исходники: https://github.com/msgpack/msgpack-php и http://pecl.php.net/package/msgpack
Ставим:
cd /tmp
wget http://pecl.php.net/get/msgpack-0.5.5.tgz
tar xzf msgpack-0.5.5.tgz
cd msgpack-0.5.5
phpize
./configure
make
make test
Если тесты прошли нормально, то создаем пакет и ставим:
sudo checkinstall -D --install=no
sudo dpkg -i msgpack_0.5.5-1_amd64.deb
igbinary
Исходники: https://github.com/phadej/igbinary/tree/master и http://pecl.php.net/package/igbinary
Далее опять
cd /tmp
wget http://pecl.php.net/get/igbinary-1.1.1.tgz
tar xzf igbinary-1.1.1.tgz
cd igbinary-1.1.1
phpize
./configure
make
make test
sudo checkinstall -D --install=no
sudo dpkg -i igbinary_1.1.1-1_amd64.deb
msgpack добавляет функции
BinData msgpack_pack(phpValue);
phpValue msgpack_unpack(BinData);
igbinary добавляет функции
BinData igbinary_serialize(phpValue);
phpValue igbinary_unserialize($BinData);
Что бы они заработали, нужно незабыть включить их в php.ini:
[igbinary]
extension=igbinary.so
; Enable or disable compacting of duplicate strings
; The default is On.
;igbinary.compact_strings=On
[msgpack]
extension=msgpack.so
Что еще важно отметить.
serialize - стандартная функция php. JSON - старое и стабильное расширение. igbinary - тоже достаточно старая библиотека, давно вышедшая в стабильную ветку. msgpack - на данный момент все еще находится в стадии beta. С msgpack мне реально доводилось ловить глюки в ее предыдущих релизах. И если я решусь внедрять ее в продакшен, то там где, ее ошибки не принисут фатального ущерба.
Собственно тесты:
1. Массив вида
array (
'v0' =>
array (
0 => 0,
1 => 1,
2 => 2,
...
3 => 3,
23 => 23,
24 => 24,
),
'rnd0' => '2e0c883df6e2cb771103f4409f053549094d6787',
..........
)
c 16384 элементами
Время сериализации (msec) | Время десериализации (msec) | размер упакованных данных (Kb) | |
MessagePack | 9 | 25 | 678 |
igbinary compact_strings=Off | 9 | 32 | 1278 |
igbinary compact_strings=On | 16 | 32 | 1120 |
JSON | 14 | 318 | 1022 |
SERIALIZE | 62 | 39 | 2486 |
2.Массив вида
array (
0 => 3183,
1 => 4527,
2 => 4084,
3 => 4032,
4 => 3920,
...
262144 => 4455,
)
Время сериализации (msec) | Время десериализации (msec) | размер упакованных данных (Kb) | |
MessagePack | 8 | 30 | 769 |
igbinary compact_strings=Off | 9 | 33 | 1920 |
igbinary compact_strings=On | 9 | 33 | 1920 |
JSON | 15 | 107 | 1281 |
SERIALIZE | 86 | 44 | 3988 |
3.Массив вида
array ( 0 => 7679461759223599104, 1 => 4898705982311625344, 2 => 5880628818820227328, ... 262144 => 6940876209816891904, )
Время сериализации (msec) | Время десериализации (msec) | размер упакованных данных (Kb) | |
MessagePack | 10 | 29 | 2305 |
igbinary compact_strings=Off | 11 | 33 | 3456 |
igbinary compact_strings=On | 11 | 33 | 3456 |
JSON | 20 | 172 | 5121 |
SERIALIZE | 92 | 49 | 7828 |
4.Массив видаarray (
0 => 0.00038631346578366,
1 => 0.00016131634134538,
2 => 0.00043595779928503,
3 => 0.00011754334410814,
4 => 0.00049353469548909,
5 => 5.2391680201184E-5,
.....
262144 => 0.00041876046901173,
)
Время сериализации (msec) | Время десериализации (msec) | размер упакованных данных (Kb) | |
MessagePack | 9 | 28 | 2305 |
igbinary compact_strings=Off | 11 | 33 | 3456 |
igbinary compact_strings=On | 11 | 33 | 3456 |
JSON | 75 | 197 | 5061 |
SERIALIZE | 264 | 176 | 8538 |
5.Массив вида
array ( 0 => 'f7df8cb47630b8cd7eb73d0da7a23b9c01aaaa84f718499c1c8cef6730f9fd03c8125cab', 1 => 'd30f79cf7fef47bd7a5611719f936539bec0d2e93bcf6eecb2611212e088d0d91f2ade9c', 2 => '86bce22a4d2805649853ac7909c4efb4dd18f255086af6e4641abb18caafc151b9aa95c8', 3 => '63afd0edc0371ad842d7a7ecc76260be4bc3e8c0da6cb383f8f9e58f2c8af88a8c0eb65e', 4 => '13c80015875a668e8fc059517ffd124abbda63c12d95666e2649fcfc6e3af75e09f5adb9', ... 32768 => '0e3808238b738aafc13a2a62f36d2a49dec4e191c22abfa379f38b5b0411bc11fa9bf92f', )
Время сериализации (msec) | Время десериализации (msec) | размер упакованных данных (Kb) | |
MessagePack | 4 | 5 | 2401 |
igbinary compact_strings=Off | 4 | 6 | 2464 |
igbinary compact_strings=On | 21 | 6 | 2463 |
JSON | 28 | 16 | 2401 |
SERIALIZE | 10 | 7 | 2806 |
Замечу что приведенные в таблицах данные являются примерными и зависят от данных. Т.к. данные у меня заполнялись случайным образом, то цифры получались разные, но разница не существенна и в целом эти цифры отражают реальную картину.
No deposit bonus codes 2021 - Casino Sites
ОтветитьУдалитьYou 딥 슬롯 can 네온 벳 play slots 토토 랜드 같은 사이트 games for free at the best casino sites that allow you to have real money gambling. There's also the chance 먹튀 to win real What is a no deposit bonus?How can 바카라총판 I win real money with free spins?