Вопрос

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

1) Действительно ли стоит принимать во внимание такие вещи?

2) Предполагая, что это стоит принять во внимание, как мне это сделать?

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

Это было полезно?

Решение

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

Тем не менее, вы можете использовать команду 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 и любых других языках, которые вы пробуете).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top