Pergunta

Estou tentando obter algumas comparações precisas de tempo de execução entre PHP e Python (e potencialmente qualquer outra linguagem que eu precise incluir).O tempo dentro de um script não é problema meu, mas o tempo dentro de um script não leva em conta tudo, desde o momento em que a solicitação é feita para executar o script até a saída.

1) Vale realmente a pena levar essas coisas em consideração?

2) Supondo que valha a pena levar isso em consideração, como faço isso?

Estou usando um Mac, então tenho acesso aos comandos do Linux e não tenho medo de compilar/criar um comando para me ajudar, só não sei como escrever tal comando.

Foi útil?

Solução

Se a sua ideia é comparar os idiomas, eu diria que qualquer coisa fora deles não é relevante para fins de comparação.

No entanto, você pode usar o comando time para medir tudo e compará-lo com o tempo dentro de um script.

Assim:

$ time script.php
HI!

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

Ele lhe dará a hora do relógio, a hora do usuário (interpretador de php) e a hora do sistema (hora do sistema operacional)

Se você está pensando na web, fica muito mais difícil porque você estaria misturando a sobrecarga do servidor web e isso nem sempre é fácil de comparar se, digamos, você estiver usando WSGI v/s mod_php.Então você também teria que conectar sondas nas partes da cadeia de serviços da web

Outras dicas

  1. Vale a pena levar em consideração a velocidade se você estiver otimizando o código.Geralmente, você deve saber por que está otimizando o código (como em:uma tarefa específica em sua base de código existente está demorando muito, e não "Ouvi dizer que o PHP é mais lento que o Python").Isso é não vale a pena levar a velocidade em consideração se você não planeja mudar de idioma.Só porque um pequeno módulo faz algo um pouco mais rápido não significa que reescrever seu aplicativo em outro idioma seja uma boa ideia.Existem muitos outros fatores para escolher um idioma além da velocidade.

  2. Você faz benchmark, é claro.Execute as duas bases de código várias vezes e compare o tempo.Você pode usar o tempo comando se ambos os scripts forem executáveis ​​a partir do shell ou usarem a respectiva funcionalidade de benchmarking de cada linguagem;o último caso depende muito da linguagem real, naturalmente.

Bem, você pode usar o comando “time” para ajudar:

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

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

E isso contornará o tempo fora do ambiente.

Quanto a saber se você realmente precisa cronometrar esse trabalho extra...isso depende inteiramente do que você está fazendo.Presumo que isso seja para algum tipo de aplicativo da Web, então depende de como a estrutura que você usa realmente funciona ...armazena em cache algum tipo de versão compilada (ou analisada) do script?Nesse caso, o tempo de inicialização será totalmente irrelevante (já que o primeiro hit será o único em que existe o tempo de inicialização).

Além disso, certifique-se de executar seus testes em um loop para poder descontar a primeira execução (e incluir o custo da primeira execução em seu relatório, se desejar).Fiz alguns testes em Java, e a primeira execução é sempre mais lenta devido ao JIT fazer seu trabalho (e o mesmo tipo de acerto pode existir em PHP, Python e qualquer outra linguagem que você tente).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top