Có khác biệt nào giữa for(;;)
và for(:)
về hiệu suất trong Mục tiêu-C không? Và thực tiễn tốt để sử dụng for(;;)
hoặc for(:)
là gì?cho (;;) so với (:) trong Hiệu suất Mục tiêu-C và Thực hành
Trả lời
Tôi giả sử rằng trong mỗi trường hợp bạn liệt kê một tập hợp các đối tượng, vì chỉ có biểu mẫu C for(;;)
cho phép đếm các kiểu nguyên thủy. Việc xây dựng for(in)
sử dụng giao thức được gọi là NSFastEnumeration
để điền vào bộ đệm với các đối tượng để sử dụng trong các lần lặp lại trong tương lai và sử dụng con trỏ để theo dõi đối tượng nào nó đã đạt tới. Điều đó làm cho nó nhanh hơn:
NSEnumerator *e = [collection objectEnumerator];
while (id o = [e nextObject]) {
//...
}
đòi hỏi một thông điệp gửi cho mỗi lần lặp, và nó nhanh hơn:
for (NSInteger i=0; i < [collection count]; i++) {
id o = [collection objectAtIndex: i];
//...
}
mà cũng đòi hỏi một thông điệp gửi cho mỗi lần lặp [*]. Cấu trúc for(in)
chỉ yêu cầu thông báo gửi mỗi khi bộ đệm chạy khô, có thể là 8 lần lặp lại.
Lưu ý rằng cũng có vòng lặp dựa trên khối với [collection enumerateObjectsUsingBlock: ^(id obj, int idx, BOOL *stop){/*...*/}];
có các thuộc tính khác nhau một lần nữa. Đặc biệt là phiên bản của công trình này có các tùy chọn có thể được cho biết để thực hiện các khối đồng thời.
[*] Người đọc quan sát sẽ nhận thấy rằng điều này thực sự yêu cầu hai thông báo gửi cho mỗi lần lặp lại vì điều kiện chấm dứt sẽ được đánh giá mỗi lần; tuy nhiên nó rất dễ dàng để giảm bớt một tin nhắn gửi cho chúng tôi rằng chúng tôi sẽ coi nó là một trong những thảo luận này.
- 1. Hiệu suất CALayer so với hiệu suất UIImageView
- 2. Hiệu suất C++, trong khi so với
- 3. strftime hiệu suất so với snprintf
- 4. Thực hành tốt nhất của dbunit cho hiệu suất
- 5. Hiệu suất trình giả lập Android so với hiệu suất thiết bị thực như thế nào?
- 6. Hiệu suất mysql BIGINT so với INT
- 7. So sánh hiệu suất của NSArray so với C Array
- 8. Đối với Linq - Hiệu suất so với Tương lai
- 9. Hiệu suất Pow() so với exp()
- 10. nump.array so với np.matrix (hiệu suất)
- 11. smallint so với int về hiệu suất
- 12. groovy 'switch' so với 'if' hiệu suất
- 13. Hiệu suất WCF net.tcp so với namedpipes
- 14. Hiệu suất 'Repa' cho mô phỏng hành tinh
- 15. So sánh hiệu suất của Derby so với PostgreSql
- 16. Tổng hợp hiệu suất so với tổng số trong LINQ
- 17. hiệu suất EC2 ELB hành
- 18. Truy vấn Hibernate so với Hiệu suất Tiêu chí
- 19. Hiệu suất so sánh chuỗi trong C#
- 20. DbContext Hiệu suất truy vấn kém so với ObjectContext
- 21. D-Bus: Thực hành cải thiện hiệu suất
- 22. Hiệu suất của regexp_replace so với dịch trong Oracle?
- 23. Hiệu suất của khung thực thể 4 so với khung thực thể 3.5 như thế nào?
- 24. Cellfun so với Simple Matlab Loop hiệu suất
- 25. So sánh hiệu suất của $ ("# foo .bar") và $ (". Bar", "#foo")
- 26. Hiệu suất ứng dụng Phonegap so với hiệu suất ứng dụng gốc
- 27. So sánh hiệu suất của Winforms và WPF
- 28. OpenCL và hiệu suất OpenMP
- 29. OpenCV: So sánh hiệu suất C++ và C
- 30. Nhiều bộ chọn so với hiệu suất chọn đơn
Hai dấu chấm phẩy tạo thành dấu hai chấm, vì vậy chúng giống hệt nhau. –
Hahaha điểm tốt.Tôi tin rằng có thể có một số khác biệt về hiệu năng như bất kỳ ngôn ngữ nào khác như Javascript và C#. –
Điều này sẽ rất dễ dàng để xây dựng một trường hợp thử nghiệm cho mỗi kiểu vòng lặp và thực hiện một số thao tác lược tả. –