Сравнение времени выполнения

Я пытаюсь получить некоторые точные сравнения времени выполнения PHP и Python (и, возможно, любого другого языка, который я должен включить). Время в сценарии не является моей проблемой, но время в сценарии не учитывает все, начиная с момента запроса на запуск сценария для вывода.

1) Is it actually worth taking such things into account?

2) Assuming it is worth taking it into account, how do I do this?

Я использую Mac, поэтому у меня есть доступ к командам Linux, и я не боюсь скомпилировать / создать команду, чтобы помочь мне, я просто не знаю, как написать такую ​​команду.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
929
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

Тем не менее, вы можете использовать команду time, чтобы все измерить и сравнить со временем в скрипте.

Так:

$ time script.php
HI!

real    0m3.218s
user    0m0.080s
sys     0m0.064s

Он предоставит вам время часов, время пользователя (интерпретатор PHP) и системное время (время ОС)

Если вы думаете о сети, то это становится намного сложнее, потому что вы будете смешивать накладные расходы веб-сервера, и это не всегда легко сравнивать, если, скажем, вы используете WSGI v / s mod_php. Затем вам нужно будет подключить зонды к веб-сервисным частям цепочки.

  1. При оптимизации кода стоит учитывать скорость. Обычно вы должны знать, почему вы оптимизируете код (например, конкретная задача в существующей кодовой базе занимает слишком много времени, а не «Я слышал, что PHP медленнее, чем Python»). Стоит учитывать скорость нет, если вы на самом деле не планируете переключать языки. То, что один крошечный модуль делает что-то немного быстрее, не означает, что переписать приложение на другом языке - хорошая идея. Помимо скорости, есть много других факторов, влияющих на выбор языка.

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

Что ж, вы можете использовать команду "time", чтобы помочь:

you@yourmachine:~$ time echo "hello world"
hello world

real    0m0.000s
user    0m0.000s
sys 0m0.000s
you@yourmachine:~$ 

И это позволит избежать времени за пределами окружающей среды.

Что касается того, нужно ли вам на самом деле выделять время для этой дополнительной работы ... это полностью зависит от того, что вы делаете. Я предполагаю, что это для какого-то веб-приложения, поэтому это зависит от того, как на самом деле работает используемая вами структура ... кэширует ли она какую-то скомпилированную (или проанализированную) версию скрипта? Если это так, то время запуска не будет иметь никакого значения (поскольку первое попадание будет единственным, в котором существует время запуска).

Кроме того, не забудьте запустить тесты в цикле, чтобы вы могли не учитывать первый запуск (и, если хотите, включить стоимость первого запуска в отчет). Я провел несколько тестов на Java, и первый запуск всегда самый медленный из-за того, что JIT выполняет свою работу (и такое же попадание может существовать в PHP, Python и любых других языках, которые вы пробуете).

Другие вопросы по теме