| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > инструкция Dec оказывается работает медленнее Sub |
| Автор: Delphist 3.9.2010, 17:09 |
| Установил супер профайлер AQTime 6.21, который анализирует время работы кода построчно. Взял в Delphi написал тупой код см. вложение (большие числа слева это машинные циклы на выполнение данной инструкции), и профайлер показал, что DEC работает медленнее чем sub. Как это? |
| Автор: okkonst 5.9.2010, 22:21 | ||
Думаю, на этот вопрос смогут ответить только разработчики профайлера - только они знают, о чем думает их продукт I:=GetTickCount; asm move ecx, 1000000000 dec ecx dec ecx dec ecx [и так еще миллион раз, на самом деле - надо подобрать так, чтобы с секунду думало] end; I:=GetTickCount-I; Даем задаче реалтаймовый приоритет и засекаем время. Потом меняем dec на SUB - и выясняем правду... |
| Автор: Mikl_ 6.9.2010, 04:23 |
| Delphist аналоги команды DEC EAX SUB EAX,1 ADD EAX,0FFFFFFFFh LEA EAX,[EAX+0FFFFFFFFh] пара команд NEG EAX/NOT EAX аналог команды DEC ECX loop $+2 |
| Автор: okkonst 6.9.2010, 12:22 | ||
Аналоги по действию. А по числу машинных тактов на операцию? Мы ведь, по сути, именно об этом говорим - о времени выполнения. Когда-то давно - точно нет: sub и add были значительно дольше. Теперь - не знаю. Тем более, что обработка команд процессором параллельна. |
| Автор: Mikl_ 7.9.2010, 03:44 |
| okkonst, а по числу машинных тактов нужно проверять на живой машине, по тактам все они занимают одинаковое время если судить по справочнику, различие по влиянию на флаги, DEC не влияет на CF и OF, но влияет на AF, ZF, SF; SUB и ADD влияют на CF, OF, AF, ZF, SF; LEA не влияет на флаги совсем |
| Автор: Tronix 13.9.2010, 21:46 |
| Возможно ошибусь, но предположу, что современные профайлеры могут использовать MSR регистры процессора для определения времени выполнения команд. Можно про них почитать вкратце здесь http://wasm.ru/article.php?article=inspr00 (начиная со слов "MSR регистры"). Там же остальные 3 части статьи. |