Оптимизация кода на php. Скорость выполнения скрипта.

Тема в разделе "PHP", создана пользователем MegO, 26 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. MegO

    MegO Постоялец

    Регистр.:
    13 фев 2009
    Сообщения:
    130
    Симпатии:
    13
    Из-за специфики задания пришлось уделять особое внимание скорости выполнения скрипта. Почитал пару статей про оптимизацию кода.

    http://php.spb.ru/php/speed.html

    Время выполнения скрипта занимает порядка 0,4 сек. Речь идёт о динамическом сайте и такое время загрузки негативно скажется на индексировании.

    Операции которые портят производительность в моём скрипте следующие: Чтение из текстового файла(с >2000 строк начинаются проблемы) и регулярные выражения, но это не так критично.

    Чтение происходит из файла построчно, строка проверяется и добавляется массив.

    А теперь собственно вопрос. Есть какие то более быстрее методы чтения из тектовых файлов? Или лучше попытаться заменить их БД (Не желательно).

    Вообщем интересуют любые советы которые помогут ускорить работу скрипта.
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Это смешно: 0.4 секунды - вообще не время.
    Да и про индексацию ерунда написана.
     
  3. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Переносите текстовый файл в MySQL и работайте с ним.
    Раньше тоже баловался с текстовыми файлами, но как бы стращно это не было - всё равно рано или поздно перейти прийдётся, но лучше рано чем поздно ;)
     
  4. Tokar

    Tokar Прохожие

    Поидее с базой MySQL работать проще чем с файлами, но иногда приходится и с файлами. Лучше как сказал OnArs, переноси в MySQL.
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Не надо ничего менять. 4 десятых секунды - это, можно сказать, мгновенное выполнение скрипта.
    Для небольшого ускорения (если файлы не огромные), можно читать файл целиком в массив или строку и затем обрабатывать.
    Использование БД не всегда панацея/разумно/необходимо.
     
  6. IT-Security

    IT-Security Писатель

    Регистр.:
    24 апр 2009
    Сообщения:
    5
    Симпатии:
    2
    Если бы время было 4 секунды, то был бы смысл какие-то телодвижения делать. А так - Вы хотите сказать, что большие каталоги продукции не индексируются поисковиками?))Там время может и 1.5 секунды быть))Не несите бред =)
     
  7. localhost:80

    localhost:80 Постоялец

    Регистр.:
    4 дек 2008
    Сообщения:
    102
    Симпатии:
    15
    Вообще то это очень хороший показатель.

    Из файлов напрямую всегда будет быстрее нежели из базы
    Оптимизацией имеет смысл начать заниматься при времени генерации страницы от 2 сек, а там уж и xdebug и прочие вещи ...
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Не всегда.
     
  9. MegO

    MegO Постоялец

    Регистр.:
    13 фев 2009
    Сообщения:
    130
    Симпатии:
    13
    Читать полностью в массив файл быстрее в 2 раза. Протестировал сам и где было можно это реализовал.
    Много сказали, а по вопросу ответов мало. Не надо писать ответы типо "0.4 это ерунда". Да может быть и не много, но я хочу чтобы всё было оптимально. 0.4 это на сервера. На моём компьютере время затягивается. Было и 20 сек при большом файле.
    Пока размер файла ограничен порядка 3000 строками, в данном случае результать удовлетворительный, но если понадобиться его увеличить время выполнения вырастет до нескольких секунд.
    Вообщем будут конкретные советы? Не надо акцентировать внимание на цифру 0.4. Просто советы, на будущее :)

    Кто нибудь пробывал использовать для обработки файлов COM написанный на c++ например?
    Оптимизаторы (Zend например) существенно скоращают время выполнения? Я думаю что на файлы это не повлияет.
     
  10. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    20 секунд тоже не смертельно. Да и на сервере всегда будет выполняться быстрее, чем на рабочем компе.

    Какой вопрос, такой ответ. Данных никаких, кроме "я хочу".

    Время выполнения сокращают не "Оптимизаторы (Zend например)", а кэши опкода. И сокращает его ровно на время компиляции скрипта. Если алгоритм скрипта хреновенький, это особо не поможет.

    Если файлы читаются часто, имеет смысл держать их в памяти.

    Если регулярками обрабатываются все строки, нет смысла читать в массив и затем его обходить.

    Если обрабатываются только строки с какими-либо признаками, можно, думать о использовании БД вместо файлов.
     
Статус темы:
Закрыта.