PHP: имеет ли смысл создавать постоянные массивы для увеличения производительности? - PullRequest
1 голос
/ 15 марта 2012

Мне нужно выполнить много str_replace($search, $replace, $input), используя те же $search и $replace. Они взорваны в функции:

function sr($input) {

    $search = explode(",","s1,s2,s3,....");
    $replace = explode(",","r1,r2,r3,...");

    return str_replace($search, $replace, $input);

}

Это не очень эффективно. Из другого SO вопрос я вижу, что я мог бы создать постоянные массивы, но предложенный метод подразумевает сериализацию. Могу поспорить, что это тоже не эффективно, но я прав?

У меня есть скомпилированный язык мышление , поэтому всякий раз, когда я могу сделать что-то постоянное, я счастлив. Но имеет ли это смысл в PHP? Я не профессионал PHP.

Точнее, зная, что эта функция будет использоваться, когда пользователи отправляют веб-запросы на страницу, как я могу эффективно оптимизировать взрывы? Есть ли такая вещь, как предварительно скомпилированный код в PHP? Или я могу определить постоянные массивы один раз, эффективно (например, проверить, создана ли постоянная / доступна ли она в контексте)?

UPDATE

Принимая во внимание предложение Истины, мы можем изменить функцию следующим образом:

function sr($input) {

    $search = array("s1","s2","s3",....");
    $replace = array("r1","r2","r3",...");

    return str_replace($search, $replace, $input);

}

Остается вопрос: оптимально ли объявлять эти массивы при каждом вызове или мы можем попытаться создать их как константы в контексте?

1 Ответ

11 голосов
/ 15 марта 2012

Имеет ли смысл [предпринимать случайные действия прямо из головы] для повышения производительности?

номер

  1. Начните беспокоиться о производительности, только если у вас есть определенные проблемы с производительностью.
  2. Как только вы его получите - начните Профилирование .
  3. Как только вы получите определенные результаты профилирования, указывающие на определенное узкое место - начните оптимизировать это узкое место.
  4. Повторяйте, пока не закончите.
...