Как я могу получить точное время, например, в миллисекундах в Objective C?

Я использую собственное разбиение слов в оболочке; что-то вроде

oIFS="$IFS"
IFS=.
set -- $version
IFS="$oIFS"

, хотя вам нужно быть осторожным с номерами версий в целом из-за алфавитных суффиксов или суффиксов даты и других раздражающих противоречивых битов. После этого позиционные параметры будут установлены на компоненты $version:

$1 = 1
$2 = 2
$3 = 13

($IFS - это набор отдельных символов, а не строка, поэтому это не будет работать с мультисимволом разделитель полей, хотя вы можете использовать IFS=.- для разделения на . или -.)

97
задан Peter Mortensen 23 October 2011 в 12:46
поделиться

3 ответа

NSDate и методы timeIntervalSince * вернут NSTimeInterval , который является двойным с точностью до миллисекунды. NSTimeInterval указывается в секундах, но для большей точности он использует двойное значение.

Чтобы рассчитать точность времени в миллисекундах, вы можете:

// Get a current time for where you want to start measuring from
NSDate *date = [NSDate date];

// do work...

// Find elapsed time and convert to milliseconds
// Use (-) modifier to conversion since receiver is earlier than now
double timePassed_ms = [date timeIntervalSinceNow] * -1000.0;

Документация по timeIntervalSinceNow .

Есть много других способов вычислить этот интервал, используя NSDate , и я бы рекомендовал посмотреть документацию по классу для NSDate , которая находится в NSDate Class Reference . 1123834]

127
ответ дан 24 November 2019 в 05:23
поделиться

mach_absolute_time () можно использовать для получения точных измерений.

См. http://developer.apple.com/qa/qa2004/qa1398.html

] Также доступен CACurrentMediaTime () , который по сути то же самое, но с более простым в использовании интерфейсом.

40
ответ дан 24 November 2019 в 05:23
поделиться

CFAbsoluteTimeGetCurrent () возвращает абсолютное время в виде значения double , но я не знаю, какова его точность - оно может ] обновляется только каждые дюжину миллисекунд, а то может обновляться каждую микросекунду, я не знаю.

14
ответ дан 24 November 2019 в 05:23
поделиться