Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.12.2011, 15:12
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Подвожу итоги сравнения двух функций в данной задаче:

1. strtr
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);

Результат средний: ~0.53 секунды

2. str_replace
$b = array('en'=>'английский','ru'=>'русский');
$a = array_keys($b);
echo str_replace($a,$b,'Этот ваш en язык, нужен для того, чтобы говорить по ru');

Результат средний: ~40.81 секунды

Различие на лицо. Напомню какие были исходные данные:
строка размером порядка 1.5-2Мб в которую поставляется массив из 7282 элементов.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #12 (permalink)  
Старый 19.12.2011, 15:42
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

greatilya,
А по отдельности что выдает:
array_keys($b); и str_replace($a,$b,'Этот ваш en язык, нужен для того, чтобы говорить по ru');
?

Сейчас глянул более подробно и лучше так как я предложил не делать, дабы не получить инкрементальность, хотя я не знаю твоей задачи полностью, но все же. Это когда уже замененные фрагменты будут заменены на новые. Поэтому str_replace так долго работает. Если тест выдаст 40 секунд на str_replace, то значит строка прогоняется с заменой каждый раз на каждый ключ массива.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 19.12.2011 в 16:03.
Ответить с цитированием
  #13 (permalink)  
Старый 19.12.2011, 18:39
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Сообщение от Gozar
А по отдельности что выдает:
array_keys($b); и str_replace($a,$b,'Этот ваш en язык, нужен для того, чтобы говорить по ru');
array_keys - я не учитывал в замере.
Замерял только работу strtr и str_replace, всё другое по времени получалось достаточно быстро и для меня не критично.

Сообщение от Gozar
Если тест выдаст 40 секунд на str_replace, то значит строка прогоняется с заменой каждый раз на каждый ключ массива.
да, именно так и получается.

Сообщение от Gozar
хотя я не знаю твоей задачи полностью
задача относительно проста:
- имеется мультиязычный сайт, с теоретической поддержкой 42 языков
-выбирая какие-то данные из БД, вместо строк подставляются лишь идентификаторы строк из таблицы LANG
- после регуляркой мы выдираем из страницы все идентификаторы и делаем соответствующий запрос с таблице LANG, который наполняет наш массив с данными.
- ну а после вставляем наши данные заменой на страницу
- выводим страницу на экран
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #14 (permalink)  
Старый 19.12.2011, 19:53
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

вывод : в php, не как в js, есть смысл залать по справочникам (лучше держать вкладку с ним) и выискивать встроенные функции. со временем тот хренов список сам запомнится.
Ответить с цитированием
  #15 (permalink)  
Старый 19.12.2011, 20:03
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от melky Посмотреть сообщение
вывод : в php, не как в js, есть смысл залать по справочникам (лучше держать вкладку с ним) и выискивать встроенные функции. со временем тот хренов список сам запомнится.
Я считаю что эффективнее будет написать:
вывод : и в php, и в js, есть смысл ...
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #16 (permalink)  
Старый 19.12.2011, 22:45
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Gozar Посмотреть сообщение
Я считаю что эффективнее будет написать:
вывод : и в php, и в js, есть смысл ...
мм. скажу вам, что недавно сравнивали встроенную функцию и велосипед. последний оказался быстрее. к сожалению, не могу назвать ни темы, ни встроенной функции.

у меня - "пустая болтовня", так скажем. как наткнусь - покажу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода. Правила хорошего тона при написании скриптов [ANTI]CheateR jQuery 1 18.09.2010 08:41
Оптимизация скрипта Беляш jQuery 3 11.07.2010 14:45
Оптимизация и разбор javascript! o55rus Общие вопросы Javascript 2 23.09.2008 20:33
Оптимизация и Быстрый код Виталий Общие вопросы Javascript 18 24.07.2008 00:21
Оптимизация скриптов object Ваши сайты и скрипты 9 21.07.2008 13:58