วิธีการบล็อกหลีกเลี่ยงการใช้อัลกอริทึมการค้นหาสำหรับทุกคีย์ :
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL* stop) {
  NSLog(@"%@ => %@", key, value);
}];
แม้ว่าNSDictionaryจะดำเนินการเป็นHashtable (ซึ่งหมายความว่าค่าใช้จ่ายของการหาค่าองค์ประกอบคือO(1)) การค้นหายังคงชะลอตัวลงซ้ำของคุณโดยปัจจัยคงที่
การวัดของฉันแสดงว่าสำหรับพจนานุกรมdของตัวเลข ...
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
for (int i = 0; i < 5000000; ++i) {
  NSNumber* value = @(i);
  dict[value.stringValue] = value;
}
... สรุปตัวเลขด้วยวิธีการบล็อก ...
__block int sum = 0;
[dict enumerateKeysAndObjectsUsingBlock:^(NSString* key, NSNumber* value, BOOL* stop) {
  sum += value.intValue;
}];
... แทนที่จะเข้าใกล้ลูป ...
int sum = 0;
for (NSString* key in dict)
  sum += [dict[key] intValue];
... เป็นเรื่องเกี่ยวกับเร็วขึ้น 40%
แก้ไข : SDK ใหม่ (6.1+) จะปรากฏขึ้นเพื่อเพิ่มประสิทธิภาพการวนซ้ำวนซ้ำดังนั้นตอนนี้วิธีการวนรอบจะเร็วกว่าวิธีบล็อกประมาณ 20%อย่างน้อยสำหรับกรณีง่ายด้านบน
               
              
Swiftไวยากรณ์อ้างอิงโพสต์นี้: stackoverflow.com/a/24111700/419348