Точная микросекунда (или лучше) синхронизация процесса в Linux

У меня такое же предупреждение при добавлении к возможностям устройства «healthkit» t в информационном plist.

Этот пакет недействителен - ключ UIRequiredDeviceCapabilities в Info.plist может не содержать значений, которые предотвратит запуск этого приложения на устройствах, которые поддерживались предыдущими версиями.

удалить Info.plist -> Требуемые возможности устройства -> Пункт -> healthkit, загрузить снова, чтобы отправить обзор.

13
задан rix0rrr 9 October 2008 в 11:23
поделиться

8 ответов

При поиске этого уровня синхронизации разрешения Вы, вероятно, пытаетесь сделать некоторую микрооптимизацию. Если это так, необходимо посмотреть на PAPI. Мало того, что это обеспечивает и тактовый стеной и виртуальный (обрабатывают только) информация синхронизации, это также обеспечивает доступ к счетчикам события ЦП, которые могут быть необходимыми, когда Вы пытаетесь улучшить производительность.

http://icl.cs.utk.edu/papi/

5
ответ дан 1 December 2019 в 23:33
поделиться

Можно использовать Таймер События Высокой точности ( HPET), если у Вас есть довольно недавние 2,6 ядра. Выезд Documentation/hpet.txt о том, как использовать его. Этим решением является зависимый платформы, хотя и я полагаю, что это только доступно в более новых x86 системах. HPET имеет, по крайней мере, таймер на 10 МГц, таким образом, он должен соответствовать Вашим требованиям легко.

я полагаю, что несколько реализаций PowerPC от Freescale поддерживают цикл точный счетчик команд также. Я использовал это много лет назад для профилирования очень оптимизированного кода, но я не могу помнить то, чем это называют. Я полагаю, что Freescale имеет патч ядра, который необходимо применить для доступа к нему от пространства пользователя.

1
ответ дан 1 December 2019 в 23:33
поделиться

http://allmybrain.com/2008/06/10/timing-cc-code-on-linux/

мог бы помочь Вам (непосредственно, если Вы делаете его в C/C++, но я надеюсь, что это даст Вам подсказки, даже если Вы не будете)... Это утверждает, что обеспечило точность микросекунды, которая просто передает Ваш критерий.:)

1
ответ дан 1 December 2019 в 23:33
поделиться

Если Вам нужны очень маленькие единицы измерения времени к для (я принимаю), тестирование скорости Вашего программного обеспечения, я был бы reccomend, просто выполняющий части, Вы хотите ко времени в цикле миллионы времен, не торопитесь прежде и после цикла и вычислите среднее число. Хороший побочный эффект выполнения этого (кроме не необходимости выяснить, как использовать наносекунды) состоит в том, что Вы получили бы более последовательные результаты, потому что случайные издержки, вызванные планировщиком OS, будут составлены в среднем.

, Конечно, если Ваша программа не должна быть в состоянии выполнить миллионы времен через секунду, это, вероятно, достаточно быстро, если Вы не можете измерить время выполнения миллисекунды.

3
ответ дан 1 December 2019 в 23:33
поделиться

Посмотрите этот вопрос еще для некоторой информации.

Что-то, что я использовал для таких вещей, является gettimeofday (). Это предоставляет структуре секунды и микросекунды. Назовите его перед кодом, и снова после. Затем просто вычтите эти две структуры с помощью timersub, и можно получить время, которое потребовалось в секундах от tv_usec поля.

5
ответ дан 1 December 2019 в 23:33
поделиться

Я полагаю, что CFC ( Абсолютно Справедливый Планировщик ) - то, что Вы ищете.

1
ответ дан 1 December 2019 в 23:33
поделиться

Я думаю, что нашел патч ядра, который я искал. Регистрация его здесь, таким образом, я не забываю ссылку:

http://user.it.uu.se/~mikpe/linux/perfctr/ http://sourceforge.net/projects/perfctr/

Править: Это работает на мои цели, хотя не очень удобный для пользователя.

1
ответ дан 1 December 2019 в 23:33
поделиться

попробовать счетчик метки времени ЦП? Википедия, кажется, предлагает использовать clock_gettime ().

1
ответ дан 1 December 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: