- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
прогрел процессор
поменял местами. Время не изменилось.
прихожу к выводу, что strtr просто медленная функция.
Прикол
Никакого прикола. Краткость кода не связана со скоростью его исполнения. На ассемблере:) код получается многократно длиннее, но работать он будет быстрее.
И к тому же, в данном случае strtr не позволяет получить требуемый результат, исходя из заданных условий.
Прикол.
Вариант с foreach и str_replace работает в 5 раз быстрее, чем strtr
Спасибо!
Я скопировал ваш код и вот мои результаты:
время выполнения 1 0.28654098510742 секунд
время выполнения 2 0.8086371421814 секунд
Поменял местами:
время выполнения 2 0.81029081344604 секунд
время выполнения 1 0.25031208992004 секунд
Интересно, почему у нас с вами такая разница?
---------- Добавлено 06.04.2017 в 17:31 ----------
Потому что надо передавать одним параметрам ключи, а другим - значения. Если имеем в распоряжении массив как в стартпосте.
Я правильно понимаю что можно это сделать с помощью функции str_replace без использования цикла?
Никак не соображу что нужно сделать. Конечно хотелось бы наиболее производительный код..
Вот что у меня получается:
$text ="текст [45] текст [78] текст [31] текст [19] текст";
$array1 = array(
1 => "[45]",
2 => "[78]",
3 => "[31]",
4 => "[19]",
);
$array2 = array(
19 => "<img src=\"19.jpg\">",
24 => "<img src=\"24.jpg\">",
45 => "<img src=\"45.jpg\">",
78 => "<img src=\"78.jpg\">",
);
$newphrase = str_replace($array1, $array2, $text);
echo $newphrase;
результат:
текст <img src="19.jpg"> текст <img src="24.jpg"> текст <img src="45.jpg"> текст <img src="78.jpg"> текст
---------- Добавлено 06.04.2017 в 17:33 ----------
А чем str_replace не устраивает? Этот вариант работает с Вашим исходным массивом.
Не устраивает только одном: я никак не соображу как с помощью него это сделать!
почему у нас с вами такая разница?
Кстати, я тоже попробовал, и получается как-то по-разному от раза к разу, причём, похоже, результат ещё и от версии PHP зависит.
Одну минуту..
Я правильно понимаю что мы в тесте заставляем выполняться этот код 100 000 раз и это занимает меньше секунды?
Если это так, то мне кажется такая нагрузка вообще пренибрежимо мала (скрип будет выполняться 1 раз при запросе) и тут особо нет разницы что использовать
Не устраивает только одном: я никак не соображу как с помощью него это сделать!
Так Вам ещё вчера, почти сразу же дали решение, надо было его только прочитать и использовать
Так Вам ещё вчера, почти сразу же дали решение, надо было его только прочитать и использовать
аа. я думал можно как то без цикла обойтись. теперь понятно, спасибо
такая нагрузка вообще пренибрежимо мала (скрип будет выполняться 1 раз при запросе) и тут особо нет разницы что использовать
Вы угадали, это в данном случае сугубо теоретический вопрос, имеющий значение при большом объёме кода и большой частоте запросов.
аа. я думал можно как то без цикла обойтись. теперь понятно, спасибо
Обойтись можно, но не факт что нужно :)
Если скобки запихнуть сразу в наш массив замен, то можно что-то вроде такого сделать:
Но так мы поставим Милторга в состояние суперпозиции.
С одной стороны нестрогое соблюдение условий, а надо даже баги воспроизводить. С другой стороны - ну меньше букофф и сложнее понять как работает!
Интересно, почему у нас с вами такая разница?
Действительно. Очень интересно.
Я все это удовольствие крутил на php 5.4.16 в режиме cgi, так как это выделенный сервер для разработки.
похоже, результат ещё и от версии PHP зависит
Очень похоже.
Я еще попробовал использовать вариант с array_walk - но с ним получается как-то совсем долго и весьма ректально, хотя Вызов пользовательской функции процесс не быстрый. (правда, начиная с 5.3 и не медленный) но чтоб в простых функциях результат отличался в разы, причем в зависимости от сервера в ту или иную сторону. Вот что странно