Làm thế nào để bạn thời gian một hàm trong Go và trả về thời gian chạy của nó theo mili giây?Làm thế nào để bạn thời gian một hàm trong Go và trả về thời gian chạy của nó theo mili giây?
Trả lời
Sử dụng gói Go testing
để chuẩn chức năng. Ví dụ,
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)
}
Output:
500000000 4.22 ns/op
Bạn cũng có thể sử dụng lệnh Go gotest để chạy điểm chuẩn.
Có một số tùy chọn để định thời gian và hẹn giờ trong gói thời gian. Xem tài liệu tại đây: http://golang.org/pkg/time/
Bạn cũng có thể sử dụng gói hồ sơ: http://golang.org/pkg/runtime/pprof/ – TJD
Tôi đã xem tài liệu đó, nhưng không có ví dụ nào được sử dụng. Tôi chỉ cần đi 'timer: = timer.Time() sau đó timer.Stop()'? Điều đó dường như không hoạt động. Và làm cách nào để truy cập thời gian bằng mili giây? –
Go's defer
làm cho điều này tầm thường.
Trong Go 1.x, xác định các chức năng sau:
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))
}
Sau đó, bạn sẽ có được Squeaky Clean một dòng thời gian trôi qua tin nhắn đăng nhập:
func someFunction() {
defer un(trace("SOME_ARBITRARY_STRING_SO_YOU_CAN_KEEP_TRACK"))
//do a bunch of stuff here...
}
Sự kỳ diệu thông minh là các dấu vết() được gọi ở đầu hàm, nhưng hàm un() được trả về cuối. Nó không phải là đồng hồ nguyên tử chính xác, do các báo cáo tường trình, nhưng nếu bạn cần độ chính xác hơn, kiểu mẫu này là một trong những điểm mạnh dẻo dai của Go.
EDIT:
Câu trả lời này ban đầu được sử dụng API gói thời gian cũ. Sao chép vào đây để chỉ giá trị lịch sử:
Để sử dụng w/Tới phiên bản trước 12-01-2011 hàng tuần:
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)
}
Có lẽ bạn cũng có thể sử dụng một Thời gian (trôi) cho việc này ... trông đẹp hơn một chút.
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())
}
Một cách dễ dàng có thể là:
import (
"fmt"
"time"
)
start := time.Now()
// some computation
elapsed := time.Since(start)
fmt.Println(elapsed)
đó sẽ ra cái gì đó như 359.684612ms
- 1. Chụp một thời gian trong mili giây
- 2. Làm thế nào để thời gian một hàm tính bằng mili giây mà không tăng :: timer
- 3. Mili giây cho dấu thời gian UNIX
- 4. C# sub mili giây thời gian
- 5. Làm thế nào để thời gian một hoạt động trong mili giây trong Ruby?
- 6. NSTimer Giảm thời gian bằng giây/mili giây
- 7. Xác định khoảng thời gian mili giây trong ca cao
- 8. Cách nhận thời gian bằng mili giây trong Android Shell?
- 9. new Date(). GetTime() không trả về dấu thời gian tính bằng mili giây
- 10. Thời gian hệ thống chrono C++ tính bằng mili giây, hoạt động thời gian
- 11. Làm thế nào để có được thời gian hiện tại trong mili giây trong C Programming
- 12. thời gian ngày Ruby trong chuyển đổi chuỗi cho đến nay thời gian với mili giây
- 13. Làm thế nào để bạn đặt thời gian và chỉ thời gian trong lịch trong Java?
- 14. Làm cách nào để có thời gian trôi qua trong C tính bằng mili giây? (Windows)
- 15. Cách xóa mili giây khỏi dấu thời gian?
- 16. Chuỗi thời gian phân tích thành mili giây
- 17. Tính toán chênh lệch thời gian tính bằng mili giây
- 18. Dấu thời gian hiện tại SQLite bằng mili giây?
- 19. Chuyển đổi thời gian sử dụng NSD thành mili giây
- 20. Làm thế nào để nhận được thời gian tính bằng mili giây kể từ thời kỳ unix trong Javascript?
- 21. Lấy danh sách tệp lớn, sắp xếp theo thời gian tệp theo * mili giây *
- 22. Hủy phần mili giây khỏi dấu thời gian
- 23. Cách nhận chênh lệch thời gian bằng mili giây
- 24. Tìm thời gian bằng mili giây bằng Powershell?
- 25. Hiện thời gian của Python() trả về một dấu thời gian trong UTC?
- 26. Lấy Dấu thời gian của Unix trong Ngôn ngữ Go (thời gian hiện tại tính bằng giây),
- 27. Thời lượng hiển thị theo mili giây
- 28. Chạy một hàm trong khoảng thời gian trong jQuery
- 29. Thời gian hệ thống Windows với mili giây chính xác
- 30. Làm thế nào để bạn tạo ra một thể hiện mới của một cấu trúc từ loại của nó tại thời gian chạy trong Go?
Đó là nano giây. – Awn