Я протестировал все остальные ответы на iPhone 4S и iPad 3 (сборка релиза). CACurrentMediaTime
имеет наименьшие издержки с небольшим запасом. timeIntervalSince1970
намного медленнее других, вероятно, из-за NSDate
накладных расходов на инстанцирование, хотя это может не иметь значения для многих случаев использования.
Я бы порекомендовал CACurrentMediaTime
, если вы хотите наименьших накладных расходов и не возражаете добавить зависимость Quartz Framework. Или gettimeofday
, если мобильность является для вас приоритетом.
iPhone 4S
CACurrentMediaTime: 1.33 µs/call
gettimeofday: 1.38 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.45 µs/call
CFAbsoluteTimeGetCurrent: 1.48 µs/call
[[NSDate date] timeIntervalSince1970]: 4.93 µs/call
iPad 3
CACurrentMediaTime: 1.25 µs/call
gettimeofday: 1.33 µs/call
CFAbsoluteTimeGetCurrent: 1.34 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.37 µs/call
[[NSDate date] timeIntervalSince1970]: 3.47 µs/call