¿Cómo sincronizar una función en Ir y devolver su tiempo de ejecución en milisegundos?¿Cómo sincronizar una función en Ir y devolver su tiempo de ejecución en milisegundos?
Respuesta
Utilice el paquete Go testing
para comparar la función. Por ejemplo,
package main
import (
"fmt"
"testing"
)
// the function to be benchmarked
func Function(n int) int64 {
n64 := int64(n)
return n64 * n64
}
func BenchmarkFunction(b *testing.B) {
n := 42
for i := 0; i < b.N; i++ {
_ = Function(n)
}
}
func main() {
br := testing.Benchmark(BenchmarkFunction)
fmt.Println(br)
}
Salida:
500000000 4.22 ns/op
También puede utilizar el comando Ir gotest para ejecutar los puntos de referencia.
Existen varias opciones para la marca de tiempo y los temporizadores en el paquete de tiempo. Consulte la documentación aquí: http://golang.org/pkg/time/
También es posible usar el paquete de perfiles: http://golang.org/pkg/runtime/pprof/ – TJD
He visto esa documentación, pero no hay ejemplos con ella utilizada. ¿Acabo de ir 'timer: = timer.Time() then timer.Stop()'? Eso no parece funcionar. ¿Y cómo puedo acceder al tiempo en milisegundos? –
Go defer
hace esto trivial.
En Ir 1.x, definir las siguientes funciones:
func trace(s string) (string, time.Time) {
log.Println("START:", s)
return s, time.Now()
}
func un(s string, startTime time.Time) {
endTime := time.Now()
log.Println(" END:", s, "ElapsedTime in seconds:", endTime.Sub(startTime))
}
Después de eso, se obtiene absolutamente limpio de tiempo transcurrido una línea de mensajes de registro:
func someFunction() {
defer un(trace("SOME_ARBITRARY_STRING_SO_YOU_CAN_KEEP_TRACK"))
//do a bunch of stuff here...
}
La magia inteligente es que la traza() se llama al principio de la función, pero el un() se difiere hasta el final. No es un reloj atómico preciso, debido a las declaraciones de registro, pero si necesita más precisión, este tipo de patrón es uno de los buenos puntos fuertes de mal gusto de Go.
EDIT:
Esta respuesta utilizada originalmente API anterior paquete de tiempo. Reproducida aquí por valor histórico solamente:
Para uso w/Ir versiones anteriores a 12-01-2011 semanal:
func trace(s string) (string, int64) {
log.Println("START:", s)
return s, time.Nanoseconds()
}
func un(s string, startTime int64) {
endTime := time.Nanoseconds()
log.Println(" END:", s, "ElapsedTime in seconds:", float32(endTime-startTime)/1E9)
}
Tal vez también se puede utilizar una duración (transcurrido) para este ... se ve una un poco mejor.
func trace(s string) (string, time.Time) {
log.Printf("trace start: %s\n", s)
return s, time.Now()
}
func un(s string, startTime time.Time) {
elapsed := time.Since(startTime)
log.Printf("trace end: %s, elapsed %f secs\n", s, elapsed.Seconds())
}
Otra manera fácil puede ser:
import (
"fmt"
"time"
)
start := time.Now()
// some computation
elapsed := time.Since(start)
fmt.Println(elapsed)
que será algo salida como 359.684612ms
- 1. Cómo sincronizar una operación en milisegundos en Ruby?
- 2. Clojure: Cómo crear una función en tiempo de ejecución
- 3. Extracción de una función en tiempo de ejecución en PHP
- 4. Opcionalmente serialice una propiedad en función de su valor de tiempo de ejecución
- 5. Cómo comprobar el tipo de variable en tiempo de ejecución en el lenguaje Ir
- 6. Escribir una función de tiempo en Haskell
- 7. ¿Cómo compongo una función Moose existente en una clase en tiempo de ejecución?
- 8. Python: crea dinámicamente la función en el tiempo de ejecución
- 9. ¿Cómo eliminar milisegundos de una marca de tiempo?
- 10. Tiempo de C++ chrono system en milisegundos, operaciones de tiempo
- 11. ¿Cómo cargo una textura en XNA en tiempo de ejecución?
- 12. ¿Cómo convertir milisegundos en horas y días?
- 13. Cálculo del tiempo transcurrido en un programa C en milisegundos
- 14. Encontrar el tiempo en milisegundos utilizando Powershell?
- 15. Tiempo de ejecución en Ocaml
- 16. ¿Cómo puedo obtener el tiempo transcurrido en milisegundos en Ruby?
- 17. ¿Cómo mostrar/ocultar una columna en tiempo de ejecución?
- 18. ¿Cómo devolver una matriz de caracteres creados en la función?
- 19. Cómo sincronizar su instalación de MAMP en múltiples Macs
- 20. NSTimer Reducir el tiempo en segundos/milisegundos
- 21. ¿Mejor forma de obtener tiempo en milisegundos en javascript?
- 22. ¿Cómo creo una fecha y hora en Python desde milisegundos?
- 23. Obtenga tiempo en milisegundos usando C#
- 24. función Ir a escribir
- 25. Android cómo crear una miniatura en tiempo de ejecución
- 26. boost :: función de rendimiento en tiempo de ejecución
- 27. Determinación de intervalos de tiempo de milisegundos en Cocoa
- 28. Cómo obtener la diferencia de tiempo en milisegundos
- 29. ¿Existe una función de suspensión alternativa en C a milisegundos?
- 30. Encontrar el tiempo en milisegundos utilizando VBScript
Eso es nanosegundos compañero. – Awn