Jak zmienia się funkcja w Go i zwraca jej czas działania w milisekundach?Jak czas funkcji w Go i zwraca jego środowisko wykonawcze w milisekundach?
Odpowiedz
Skorzystaj z pakietu Go testing
, aby porównać tę funkcję. Na przykład,
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)
}
wyjściowa:
500000000 4.22 ns/op
Można również użyć polecenia Go gotest uruchomić wzorców.
Istnieje kilka opcji dla znaczników czasu i timerów w pakiecie czasu. Zobacz dokumentację tutaj: http://golang.org/pkg/time/
Można również skorzystać z pakietu profilowania: http://golang.org/pkg/runtime/pprof/ – TJD
Widziałem tę dokumentację, ale nie używano żadnych przykładów. Czy po prostu uruchomię 'timer: = timer.Time(), a następnie timer.Stop()'? To chyba nie działa. A jak mam uzyskać dostęp do czasu w milisekundach? –
Go to defer
czyni to trywialnym.
Przejdź 1.x zdefiniować następujące funkcje:
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))
}
Po tym, można dostać wypucowane jednej linii komunikatów dziennika upłynął czas:
func someFunction() {
defer un(trace("SOME_ARBITRARY_STRING_SO_YOU_CAN_KEEP_TRACK"))
//do a bunch of stuff here...
}
Pomysłowa magia jest to, że ślad() jest wywoływane na początku funkcji, ale un() jest odroczone do końca. Nie jest to dokładny zegar atomowy, ze względu na wyciągi z dziennika, ale jeśli potrzebujesz większej dokładności, ten rodzaj wzoru jest jednym z dobrych atutów Go's marshmallowy.
EDYTOWANIE:
Ta odpowiedź pierwotnie służyła za pakiet API czasu przeszłego. Powielana tutaj tylko wartość historyczną:
Do stosowania w/Idź wersjach wcześniejszych 12-01-2011 tygodniowy:
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)
}
Może również użyć trwania (który upłynął) za to wygląda ... trochę ładniej.
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())
}
Innym sposobem może być:
import (
"fmt"
"time"
)
start := time.Now()
// some computation
elapsed := time.Since(start)
fmt.Println(elapsed)
który wyświetli coś jak 359.684612ms
- 1. Przechwytywanie czas w milisekundach
- 2. Ruby Jak określić środowisko wykonawcze
- 3. Utwórz środowisko wykonawcze TToolbutton
- 4. Jak uzyskać środowisko wykonawcze skryptu R?
- 5. var słowo kluczowe środowisko wykonawcze lub czas kompilacji?
- 6. Piramida + jinja2 i nowe środowisko wykonawcze GAE
- 7. Apple System Czas logowania w milisekundach?
- 8. Jak zmodyfikować środowisko wykonawcze sekcji web.config?
- 9. Jak uzyskać czas w milisekundach w powłoce Androida?
- 10. Dokładny czas funkcji w python
- 11. Uzyskaj czas w milisekundach, używając C#
- 12. Ładowanie XML XAML przez środowisko wykonawcze?
- 13. Uzyskaj aktualny czas systemowy w milisekundach
- 14. Jak edytować ścieżkę klas (środowisko wykonawcze) w środowisku Eclipse?
- 15. Dlaczego nie mogę zainstalować mojej usługi (środowisko wykonawcze nowsze niż ładowane środowisko wykonawcze)?
- 16. Jak uzyskać bieżący czas w milisekundach w Androidzie
- 17. Jak uzyskać czas w milisekundach w skrypcie bash?
- 18. Jak wyświetlić czas wykonania w ssms w milisekundach?
- 19. Jak uzyskać czas w milisekundach od epoki unixowej w JavaScript?
- 20. Jak uzyskać czas, który upłynął w C w milisekundach? (Windows)
- 21. Środowisko wykonawcze niejawnie rzutuje z obiektu
- 22. Czy środowisko wykonawcze Java ignoruje identyfikatory serialVersionUID?
- 23. Środowisko wykonawcze C++, komunikat wyjątku wyświetlania
- 24. Czy środowisko wykonawcze F # 3.0 można redystrybuować?
- 25. Jak uzyskać czas GMT w milisekundach za pomocą doładowania Date_Time?
- 26. W jaki sposób środowisko wykonawcze .NET przenosi pamięć?
- 27. Format/czas w milisekundach, do lokalnego łańcucha w Androidzie
- 28. W jaki sposób środowisko wykonawcze .NET zlokalizować niezweryfikowane "zespoły"?
- 29. Środowisko leksykalne i zakres funkcji
- 30. Czy środowisko wykonawcze Java jest preinstalowane w systemie MAC OSX?
To jest nanosekundowy kolega. – Awn