Domanda

Sto cercando di ottenere alcuni confronti accurati di runtime tra PHP e Python (e potenzialmente qualsiasi altro linguaggio che devo includere).La tempistica all'interno di uno script non è un mio problema, ma la tempistica all'interno di uno script non tiene conto di tutto dal momento in cui viene effettuata la richiesta di eseguire lo script fino all'output.

1) Vale davvero la pena tenere conto di queste cose?

2) Supponendo che valga la pena tenerne conto, come posso farlo?

Sto usando un Mac quindi ho accesso ai comandi Linux e non ho paura di compilare/creare un comando che mi aiuti, semplicemente non so come scrivere un comando del genere.

È stato utile?

Soluzione

Se la tua idea è quella di confrontare le lingue, direi che qualsiasi cosa al di fuori di esse non è rilevante ai fini del confronto.

Tuttavia puoi usare il comando time per misurare tutto e confrontarlo con i tempi all'interno di uno script.

Come questo:

$ time script.php
HI!

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

Ti darà l'ora dell'orologio, l'ora dell'utente (interprete php) e l'ora del sistema (ora del sistema operativo)

Se stai pensando al web, diventa molto più difficile perché mescoleresti il ​​sovraccarico del server web e questo non è sempre facile da confrontare se, ad esempio, stai utilizzando WSGI v/s mod_php.Quindi dovresti collegare le sonde anche alle parti webserving della catena

Altri suggerimenti

  1. Vale la pena prendere in considerazione la velocità se stai ottimizzando il codice.In genere dovresti sapere perché stai ottimizzando il codice (come in:un'attività specifica nella codebase esistente richiede troppo tempo, non "ho sentito che PHP è più lento di Python").Suo non vale la pena prendere in considerazione la velocità se non hai intenzione di cambiare lingua.Solo perché un piccolo modulo fa qualcosa di leggermente più veloce non significa che riscrivere la tua app in un'altra lingua sia una buona idea.Ci sono molti altri fattori nella scelta di una lingua oltre alla velocità.

  2. Il tuo punto di riferimento, ovviamente.Esegui le due basi di codice più volte e confronta i tempi.Puoi usare il tempo comando se entrambi gli script sono eseguibili dalla shell o utilizzano la rispettiva funzionalità di benchmarking da ciascuna lingua;quest'ultimo caso dipende molto dalla lingua corrente, naturalmente.

Bene, puoi usare il comando "time" per aiutarti:

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

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

E questo eviterà i tempi al di fuori dell’ambiente.

Per quanto riguarda la necessità di cronometrare effettivamente quel lavoro extra...dipende interamente da cosa stai facendo.Presumo che questo sia per qualche tipo di applicazione web di qualche tipo, quindi dipende da come funziona effettivamente il framework che usi...memorizza nella cache una sorta di versione compilata (o analizzata) dello script?Se è così, il tempo di avvio sarà totalmente irrilevante (poiché il primo colpo sarà l'unico in cui esiste il tempo di avvio).

Inoltre, assicurati di eseguire i test in un ciclo in modo da poter scontare la prima esecuzione (e includere il costo della prima esecuzione nel rapporto, se lo desideri).Ho eseguito alcuni test in Java e la prima esecuzione è sempre più lenta a causa del JIT che esegue il suo lavoro (e lo stesso tipo di successo potrebbe esistere in PHP, Python e qualsiasi altro linguaggio che provi).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top