Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
В общем друзья, такое дело:
Есть у меня один скриптец, разбивающий длинный текст на массив из отдельных слов. Так вот, в этой функции используется условие, при котором лесом идут все слова короче чем X символов. И там используется функция измерения длины слова. Но к чему это я... А к тому, что вот функция-обёртка strlen, для работы с русским текстом:
Меня убило то, что когда используешь mb_strlen напрямую без обёрток - скрипт обрабатывает текст из 4000 слов за 0.2 секунды.
А если я подключаю вместо неё вышеозначеную - обёртку (мало-ли, вдруг на целевом хостинге нету расширения mbstring) - скрипт над тем-же текстом потеет... АЖ ЦЕЛЫХ ПОЛТОРЫ СЕКУНДЫ!!!
Вопрос? Это чё за шляпа??? (Добавление) Однако...
Заменив exstension_loaded() на function_exists() - скорость повысилась аж в два раза. Но всё равно, в три раза медленнее чем без обёртки.
Долгое это дело оказывается, независимость от подключеных расширений PHP.
И кстати... На этом форуме, да и на многих других - юзается phpbb, так вот, там есть такая весёлая библиотека функций - utf8_tools.php А там этих exstension_loaded() - OVER9000... Вот вам и идея по оптимизации данного форумного движка.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Так дело быть может, как раз в ней? extension_loaded прекомпилирована, а вот обертка - нет.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Haron
Отправлено: 25 Апреля, 2011 - 09:01:53
Частый гость
Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
EuGen пишет:
Так дело быть может, как раз в ней? extension_loaded прекомпилирована, а вот обертка - нет.
Я пошутил про обёртку... А в записи - ошибся, код вручную писал, без копипаста, торопился.
Попозже пару тестов выложу... (Добавление)
Итак - результаты теста:
Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010 Откуда: Казахстан
Помог: 4 раз(а)
А, что удивительного в том что:
Цитата:
Использование обёртки test_strlen_one() с проверкой на доступность расширения
повышает время выполнения скрипта
EuGen
Отправлено: 25 Апреля, 2011 - 11:24:12
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Можете немного оптимизировать так - сначала, до цикла:
$function=extension_loaded('mbstring')?'mb_strlen':'ваша обертка';
И в цикле вызывать $function($value)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Haron
Отправлено: 25 Апреля, 2011 - 11:24:48
Частый гость
Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
morosit пишет:
А, что удивительного в том что:
Цитата:
Использование обёртки test_strlen_one() с проверкой на доступность расширения
повышает время выполнения скрипта
В том-то и дело, что ничего удивительного. Однако, подобные проверки - встречаются почти повсеместно. (Добавление)
С оптимизацией EuGen'a - выполнило за 0.41 секунду
----- И чё?
EuGen
Отправлено: 25 Апреля, 2011 - 12:12:29
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Да, кстати. Сколько раз тестируете (чтобы подсчитать среднее время)?.. меньше, скажем, 10000 смысла нет.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Stierus
Отправлено: 25 Апреля, 2011 - 12:50:50
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Вас устраивает, что мешает 1 раз, в самом начале, перед циклом обработки, прогнать всю строку с текстом через utf8_decode($str); (если это нужно, конечно) и потом смотреть обычным strlen ?
Haron
Отправлено: 25 Апреля, 2011 - 14:42:21
Частый гость
Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
Цитата:
Да, кстати. Сколько раз тестируете (чтобы подсчитать среднее время)?.. меньше, скажем, 10000 смысла нет.
1000 прогонов на модифицированном варианте скрипта. (файло с текстом читает с диска 1 раз, запуск через CLI).
Цитата:
Но если результат работы вас устраивает
Да результат-то устраивает, вполне, но речь не о том. Кстати позже и это замерю
----- И чё?
Ch_chov
Отправлено: 25 Апреля, 2011 - 16:30:52
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.