Как найти значение времени операции для оптимизации нового алгоритма разработки? - PullRequest
1 голос
/ 06 января 2011

Мой вопрос касается iPhone, iPod и iPad, так как я предполагаю, что архитектура имеет большое значение.Я надеюсь, что где-то есть спецификация (возможно, для различных чипов) или надежный способ измерения T для каждой конкретной инструкции.Я знаю, что могу использовать любое количество инструментов для измерения совокупного времени процессора, используемой памяти и т. Д. Я хочу дать количественную оценку на более низком уровне.

Итак, я могу выяснить, сколько раз я хожучерез основную часть алгоритма.Например, я повторяю n * (n-1) раза в наивной реализации, и между n (в лучшем случае) и n + n * (n-1) (в худшем случае) в другой.Я также могу подсчитать общее количество команд (+ - =% * / и логических операторов) и сравнить их, но при условии, что вес каждой операции одинаков.Кроме того, я не имею ни малейшего представления, как взвесить фактическое значение времени логического утверждения (если, иначе, для, в то время) против математического оператора ... это «если» столько же, сколько «+» каждый раз, когда яиспользуй это?Я хотел бы знать, где найти эту информацию.

Итак, для ясности, моя цель состоит в том, чтобы выяснить, сколько процессорного времени я требую от процессора (или графического процессора или любого U), чтобы я мог спроектироватьоптимальный алгоритм вокруг процессорного времени.Может кто-нибудь дать мне представление о том, с чего начать аппаратное обеспечение iOS?

Редактировать: Эта ссылка на ClockServices.c и SIMD на портале для разработчиков может быть хорошим началом для людей, интересующихсяэтот.Еще несколько чашек кофе сегодня вечером, и я могу пройти через это;)

Ответы [ 2 ]

2 голосов
/ 06 января 2011

На современной платформе процессорное время - не единственный ограничивающий фактор.Зачастую доступ к памяти.

Тем не менее, время процессора:
Ваш базовый подход к оценке загрузки процессора в порядке, хотя и разумен:примерная оценка стоимости, основанная на ваших знаниях типовых платформ.

В этой статье в таблице 1 показано время типичных примитивных операций в .NET.Хотя ваша платформа может отличаться, относительное время обычно очень похоже.Может быть, вы можете найти - или даже сделать - один для iStuff.

(я не сталкивался с такой подробностью для других платформ, кроме руководств по процессорам / наборам команд, но они имеют дело с инструкциями по сборке)

расположение памяти:
Отсутствие кэша может стоить сотни циклов, а доступ к диску - в тысячу раз дороже.Таким образом, управление вашими шаблонами доступа к памяти (то есть сокращение рабочего набора, реструктуризация и доступ к данным удобным для кэша способом) является важной частью оценки алгоритма.

0 голосов
/ 06 января 2011

В xCode есть инструменты для измерения производительности каждой функции / операции, вы можете просто использовать их.

...