Sono nuovo nel linguaggio D e ho bisogno di misurare il tempo di esecuzione di un algoritmo. Quali sono le mie opzioni? Esiste già una soluzione integrata? Non ho trovato nulla di conclusivo sul web.Misurazione del tempo di esecuzione nel linguaggio D
risposta
Un modo è utilizzare il parametro della riga di comando -profile
. Dopo aver eseguito il programma, verrà creato il file trace.log in cui è possibile trovare il tempo di esecuzione per ciascuna funzione. Questo naturalmente rallenterà il tuo programma in quanto il compilatore inserirà il codice di conteggio del tempo in ogni tua funzione. Questo metodo viene utilizzato per trovare la velocità relativa delle funzioni, per identificare quali ottimizzare per migliorare la velocità dell'app con il minimo sforzo.
Secondo le opzioni è la classe std.datetime.StopWatch. Vedi l'esempio nel link.
O meglio ancora adatto potrebbe essere quello di utilizzare direttamente la funzione std.datetime.benchmark.
Non dimenticare:
- Quando il benchmarking uso questi flag di compilazione DMD per ottenere la massima ottimizzazione
-release -O -inline -noboundscheck
. - Mai eseguire il benchmark debug build.
- Assicurati di non chiamare codice libreria all'interno delle funzioni di benchmark. Dovresti eseguire il benchmark delle prestazioni dell'implementazione della libreria anziché del tuo codice.
Inoltre, è possibile utilizzare i compilatori LDC o GDC. Entrambi offrono migliori ottimizzazioni/velocità di esecuzione dell'app rispetto a DMD.
Se il tuo algoritmo può essere chiamato dalla riga di comando c'è un'utile utility scritta in D che eseguirà il tuo programma un certo numero di volte e stamperà la distribuzione del tempo medio impiegato e tutti i tipi di altri numeri utili.
Si chiama avgtime ed è qui: https://github.com/jmcabo/avgtime
std.benchmark è nella coda di revisione.
- 1. Tempo di esecuzione codice di misurazione
- 2. Misurazione del tempo di esecuzione in C++ Codice OpenMP
- 3. misurazione esatta del tempo
- 4. Misurazione del tempo CPU trascorso in Julia
- 5. Misurazione del tempo trascorso in python
- 6. misurazione tempo caricamento ajax
- 7. Misurazione del tempo estremamente precisa in C
- 8. Misurazione del tempo di modifica del rendering avviato da Javascript
- 9. Concorrenza in stile Erlang nel linguaggio di programmazione D
- 10. Misurazione del tempo di caricamento di una pagina Web (C#)
- 11. Ordinamento diretto sul posto nel linguaggio di programmazione D
- 12. Misurazione del runtime di un codice C++?
- 13. misurazione del tempo di richiesta http con node.js
- 14. Tempo di misurazione su richieste HTTP node.js
- 15. Esperienze con linguaggio di programmazione D
- 16. Collegamenti di linguaggio MySQL per D?
- 17. Misurazione del tempo impiegato da una funzione: clock_gettime
- 18. Strumenti di misurazione del codice validi?
- 19. Registrazione del metodo di tempo di esecuzione
- 20. Controllo del tempo di esecuzione nell'intelligence IDEA
- 21. Il linguaggio D ha un bagaglio "proprietario"?
- 22. Supporto Emacs per il linguaggio D
- 23. Chiama C++ (C) dal linguaggio D
- 24. Qual è il caso d'uso per la valutazione del tempo di compilazione di D
- 25. tempo di esecuzione mysql
- 26. Tempo medio di esecuzione
- 27. Eventi simili a C# in linguaggio di programmazione D
- 28. libreria di algebra lineare per il linguaggio di programmazione D
- 29. D profilo del compilatore
- 30. Tempo di misurazione trascorso su GC in JVM
Il profilo non è quello che mi serve in questo caso, ma 'std.datetime.StopWatch' è esattamente quello che stavo cercando. – clstaudt