Tôi muốn biết phải mất bao lâu để gửi tin nhắn đến một đối tượng có độ chính xác tối thiểu là 1ms. Làm thế nào để tôi làm điều này?Làm cách nào để chính xác thời gian để gọi một chức năng trên iPhone?
Trả lời
Dưới đây là những gì tôi làm:
NSDate * start = [NSDate date];
// do whatever I need to time
NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
Đầu ra sẽ là chỉ trong vài giây (với một phần thập phân). NSDate
s có độ phân giải trên thang đo mili giây, mặc dù tôi không chắc chắn chính xác độ chính xác của chúng.
Nếu mã bạn đang cố gắng quá nhanh, hãy đặt mã vào vòng lặp chạy mã hàng trăm lần. (Điều đó giả định, tất nhiên, mã bạn đang định thời không có tác dụng phụ.)
Bạn có thể sử dụng mach_absolute_time
để đo bằng nano giây.
#import <mach/mach_time.h>
uint64_t startTime = 0;
uint64_t endTime = 0;
uint64_t elapsedTime = 0;
uint64_t elapsedTimeNano = 0;
mach_timebase_info_data_t timeBaseInfo;
mach_timebase_info(&timeBaseInfo);
startTime = mach_absolute_time();
//do something here
endTime = mach_absolute_time();
elapsedTime = endTime - startTime;
elapsedTimeNano = elapsedTime * timeBaseInfo.numer/timeBaseInfo.denom;
Sử dụng dispatch_benchmark để đăng nhập thời gian thực hiện phương pháp trong nano giây.
Có cú pháp đẹp hơn nhiều so với vòng lặp thủ công và gọi mach_absolute_time() dispatch_benchmark là một phần của Grand Central Dispatch. Chức năng này không được công khai tuyên bố, do đó bạn sẽ phải làm điều đó cho mình trước khi sử dụng:
extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));
Tôi đang sử dụng này cho thời gian thực hiện đăng nhập:
size_t const blockIterations = 1; //block call count
uint64_t t = dispatch_benchmark(blockIterations, ^{ //your code inside block
[self TEST_processJSONDataRecordsWithCompletionHandler:^(id handler) {}];
});
NSLog(@" Avg. Runtime in nanoseconds : %llu ns", t);
tín dụng đi vào Benchmarking
- 1. Cách đồng bộ hóa chính xác thời gian giữa iPhone?
- 2. Moq để thiết lập một chức năng trở lại dựa trên thời gian gọi là
- 3. Làm cách nào để gọi đúng chức năng SQLite từ chuỗi nền trên iPhone?
- 4. cách chính xác để đưa chức năng lâu gọi trên nhiều dòng
- 5. Gọi để xác định chức năng trên Codeigniter
- 6. Làm thế nào để phân vùng chính xác một bảng trong thời gian thực trong kdb?
- 7. Gọi để xác định chức năng filter_var()
- 8. Gọi để xác định chức năng ssh2_connect()
- 9. Làm thế nào để chuyển tiếp MPMoviePlayerController đến thời gian xác định trong ứng dụng iPhone?
- 10. cách chính xác để định dạng chức năng javascript
- 11. Làm thế nào để xác định một chức năng variadic
- 12. gọi sizeof trên một cuộc gọi bỏ qua chức năng thực sự gọi chức năng!}
- 13. C cách đo thời gian chính xác?
- 14. Java: chức năng ngày JPQL để thêm một khoảng thời gian để một ngày khác
- 15. Làm cách nào để gọi IL2JS chính xác?
- 16. Thời gian chính xác trong .NET
- 17. Làm cách nào để có được thời gian UTC chính xác với Python?
- 18. Làm cách nào để ước tính thời gian tải xuống còn lại (chính xác)?
- 19. Làm cách nào để chờ tải div trước khi gọi một chức năng khác?
- 20. Thời gian chính xác của các hàm trong python
- 21. Chức năng gọi một cách đệ quy trong khoảng thời gian đều đặn
- 22. Sigabrt trên chức năng chính
- 23. Gọi một số chức năng trước khi chính trong C
- 24. Làm thế nào để gọi chức năng của hoạt động chính từ ArrayAdapter tùy chỉnh?
- 25. Có chức năng Scala chuẩn nào để chạy một khối với thời gian chờ không?
- 26. Ai gọi chức năng chính trong java?
- 27. làm thế nào để gọi javascript chức năng trên tải trang trong MVC3
- 28. Làm cách nào để gọi một chức năng sau khi một người ngừng nhập?
- 29. Làm thế nào để gọi một chuỗi để chạy vào thời gian cụ thể trong java?
- 30. Gọi để không xác định chức năng mysqli_result :: num_rows()
Đây là những gì tôi chạy. Cá nhân tôi không quan tâm nếu nó quá nhanh vì tôi chỉ quan tâm đến tắc nghẽn. =) – migs647