Автор Тема: Unsirialize() vs. Explode(), что быстрее?  (Прочитано 12827 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Unsirialize() vs. Explode(), что быстрее?
« : 27 Июля 2002, 16:07:02 »
Что будет быстрее Unsirialize() или Explode(), данные хранятся в файле.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #1 : 27 Июля 2002, 16:23:49 »
Tronyx
Кто сильнее - кит или слон?
Смотри:
array explode(string separator, string string [, int limit)
Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string separator. If limit is set, the returned array will contain a maximum of limit elements with the last element containing the rest of string.

unserialize() takes a single serialized variable (see serialize()) and converts it back into a PHP value. The converted value is returned, and can be an integer, float, string, array or object.

Перевести?

И еще почитай про Serialize() и implode().

ИМХО сравнение некорректно немного...

Что приметять зависит от того, какого типа данные храняться в файле.
AS IS...

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Unsirialize() vs. Explode(), что быстрее?
« Ответ #2 : 27 Июля 2002, 17:07:40 »
Цитировать
Перевести?

Да. :)

Цитировать
ИМХО сравнение некорректно немного...

Да. Извини не корректно вопрос задал. Расшифровываю: как быстрее будет "добраться" до данных из файла? Хранить их в сериализованом виде или элементы разделять например "|", а потом explode`ом их разбивать.

Цитировать
ИМХО сравнение некорректно немного...

Что приметять зависит от того, какого типа данные храняться в файле

Задача: достать из файла (< 1 Kb) 2-3 массива с 3-4 элементами.

Если использовать explode:

$file
=file("file.txt");
for (
$i=0$i<sizeof($file); $i++) {
    
$array[$i]=explode("|"$file[$i]);    
}

Unserialize:

$file
=file("file.txt");
$file=join(""$file);
Unserialize($file);
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Unsirialize() vs. Explode(), что быстрее?
« Ответ #3 : 27 Июля 2002, 17:58:01 »
По моим тестам
explode - 0.0036240
unserialzie - 0.0021610
Только прежде чем производить unserialzie, нужно сначала сериализовать данные, что тоже отнимет время.
Хотя наверняка это время сильно зависит от размеров массива.
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #4 : 27 Июля 2002, 18:01:59 »
Цитировать
Задача: достать из файла (< 1 Kb) 2-3 массива с 3-4 элементами.

Explode однозначно...
GotZfild
прав
Цитировать
нужно сначала сериализовать данные

Лишняя операция.
AS IS...

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Unsirialize() vs. Explode(), что быстрее?
« Ответ #5 : 27 Июля 2002, 19:20:31 »
Цитировать
нужно сначала сериализовать данные

Это не беда. Новые данные будут писаться очень редко
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #6 : 27 Июля 2002, 19:47:03 »
Tronyx
Т огда сам решай :)
AS IS...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #7 : 27 Июля 2002, 21:26:36 »
Насколько я понимаю, сериализованные данные занимают больше одной строки.
А вообще вопрос, на мой взгляд, из серии бесполезных.

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Unsirialize() vs. Explode(), что быстрее?
« Ответ #8 : 27 Июля 2002, 23:14:20 »
RomikChef
а вот мне кажется, что именно твой ответ и бесполезен. Прочитай сначала вопрос, а потом свой ответ.


Tronyx
в зависимости от типов данных - будет разная скорость. Лично я предпочитаю сериалайз, так как в таком случае ты не ограничиваешься на типе хранимых данных.
Представь например, как ты будешь хранить многомерный массив - т.е. сколько операций придется выполнить для его записи, чтения.
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #9 : 27 Июля 2002, 23:45:39 »
Stek
А я предпочитаю не доводить до того, чтобы приходилось хранить массивы.
Всегда можно обойтись без них, и это будет совместимо и удобно.

Про бесполезность я поясню.
Во-первых, совсем нетрудно потестить самому.
Во-вторых, я готов спорить, у него на сайте есть куда более животрепещущие проблемы и куда более серьезные дыры в производительности.

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Unsirialize() vs. Explode(), что быстрее?
« Ответ #10 : 28 Июля 2002, 02:05:54 »
RomikChef
Может и так, но все таки не стоит на вопрос, при том нормальный, отвечать в духе "ну и фигню вы товарищ тут спрашиваете".
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #11 : 28 Июля 2002, 11:21:09 »
Stek
Если ты не понял моих слов, то это твоя проблема.
Я сказал, что это бесполезный вопрос. Это не тот вопрос, которому надо придавать такое уж внимание.

Но, пожалуй, я возьму свои слова обратно.
Тут действительно не было сказано о размере массива.
Если кто-то хочет хранить в сериализованном виде ленту новостей, то это дурная идея. Лучше разориться на 5 баксов и взять нормальный хостинг с базой данных.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Unsirialize() vs. Explode(), что быстрее?
« Ответ #12 : 28 Июля 2002, 13:26:17 »
Цитировать
Если кто-то хочет хранить в сериализованном виде ленту новостей, то это дурная идея. Лучше разориться на 5 баксов и взять нормальный хостинг с базой данных.

Во первых кто тебе сказал что у меня нет БД?! А во вторых это не лента новостей.

Я пишу скрипт который достаёт из БД контент (в зависимоти от URL, так как файл и папки виртуальные (прочти мою тему "виртуальные файлы и папки" там подробней рассказано)), затем вставляет его в шаблон. У каждой папки есть своё название, Title формируется путём "склеивания" этих названий, + для дюбой папки можно указать шаблон который будут наследовать все вложеные, использоваться будет самый последний шаблон.

И чтобы сэкономить на скорости (сделать меньше запросов к БД) я использую кеширование этой информации - сохраняю в файл массив названий папок, используемый шаблон и т.д. для конкретного URL (один URL - один файл). Если использовать explode это выглядет так:

заголовок1|заголовок2|...|заголовокN
Шаблон
ещё какой-нибудь параметр

Цитировать
Тут действительно не было сказано о размере массива.

Правда что ли! А это что такое?
> Задача: достать из файла (< 1 Kb) 2-3 массива с 3-4 элементами.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Unsirialize() vs. Explode(), что быстрее?
« Ответ #13 : 28 Июля 2002, 13:30:49 »
Я думаю, накладные расходы на работу с твоим "кэшем" равны скорости работы с базой. Ты вообще замерял?

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Unsirialize() vs. Explode(), что быстрее?
« Ответ #14 : 28 Июля 2002, 17:09:02 »
Цитировать
Ты вообще замерял?

Нет, но при большой посещаемости и большой базе, думаю лучше для этого "кеша" использовать файлы.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28