|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 12, 2003 15:06:00 · Поправил: prog Где можно взять инфу по скорости выполнения команд, в тактах? И размер в байтах. Например, что быстрее- lodsd или mov eax, dword ptr [esi] ? |
|
|
Дата: Ноя 12, 2003 15:17:32 Размер в байтах - где угодно, хоть в отладчике, а скорость зависит от многих вещей, поэтому конкретной информации для _одной_ инструкции ты вряд ли найдешь. В профайлере смотреть можно, или вручную считать :) |
|
|
Дата: Ноя 12, 2003 15:24:33 · Поправил: prog хм.. но я помню- для доса был такой хелп , там было расписано про каждую инструкцию- сколько байт и сколько тактов смотря от размерности и типа операндов. "а скорость зависит от многих вещей" - скорость работы куска кода или целой программы, конечно, зависит от многих вещей, но я имею ввиду одну_инструкцию_процессора, скорость выполнения которой жестко задана железом, принципиальной схемой процессора, тем, как там у него соединены транзисторы.. поэтому скорость выполнения одной инструкции процессора зависит только от состояния его внутреннего программного кэша (и то, наверное, только при работе с памятью) но это уже никто не предскажет конечно, и я это и не учитываю, и от его эл.схемы, так что я имею ввиду- кол-во тактов процессора, за которые он выполнит одну инструкцию. в MASM32 opcodes.htp : LODS: Clocks: 808 : 12/16 286 : 5 386 : 5 486 : 5 Size bytes : 1 а mov reg,mem - 1 такт чтото мне не верится. вроде помню что в досе когда чтото делал - вроде все такие штуки- stos lods movs были быстрее.. но может я и забыл.. |
|
|
Дата: Ноя 12, 2003 17:01:14 Правка А что, Opcodes.hlp не пойдёт? Устарел? Есть, кажется, в Интелевских мануалах что-то типа справочника. Может, я ошибаюсь... |
|
|
Дата: Ноя 12, 2003 17:11:03 А что, Opcodes.hlp не пойдёт? Устарел? :) не знаю.. смущает то, что там только до 486 данные и поэтому почемуто доверия мало к нему. опятьже говою- насчет lods - мне почемуто казалось, что это быстрее чем mov reg,mem т.к. этоже не макро, а инструкция процессора.. |
|
|
Дата: Ноя 12, 2003 17:17:04 Я тебе одно скажу - VTune. Это ответы на все твои вопросы. |
|
|
Дата: Ноя 12, 2003 17:56:35 неужели все так сложно? |
|
|
Дата: Ноя 12, 2003 18:09:00 · Поправил: masquer неужели все так сложно? Конечно, сложно, инструкции могут паралельно процессором выполняться, соотв. несколько инструкции могут выполняться за 1 такт, как ты их делить будешь? :) |
|
|
Дата: Ноя 12, 2003 18:14:52 · Поправил: prog хм.. я думал, что параллельно процессор на самом деле ничего не выполняет.. (это я про пентиумы) считал, что параллельно - это когда процессор просто прерывается поочередно на каждую "параллельную" задачу и выполняет ее инструкции.. Если он может за один такт выполнить несколько инструкций одновременно, то это (количество аппаратно поддерживаемых параллельных процессов) должно входить в его технические характеристики? какие они например для P4 ? |
|
|
Дата: Ноя 12, 2003 19:01:01 prog Почитайте сперва про pipelining (конвейер). |
|
|
Дата: Ноя 12, 2003 19:12:05 вот блин.. точно. все не так просто.. спасибо. |
|
|
Дата: Ноя 12, 2003 19:55:00 Prog Тебе поможет книга: Зубков С.В. Assembler для DOS, Windows и Unix (ст. 570-594 и Глава 9 Оптимизация). (команды для Intel 8080 - Pentium III) Что касается скорости выполнения: Каждое поколение процессоров индивидуально! Если собираешься делать низкоуровневую оптимизацию под конкретный CPU то изучай хорошо архитектуру (КЭШи, конвейеры и т.д.). Но будь осторожен, так как это всё очень тонко. Пример: программу оптимизировал под пень второй, когда код цикла сдвинул на один байт, программа стала выполнять свою работу не 4 часа 20 минут, а 5 часов. Мои тебе рекомендации: используй оптимизацию в построении алгоритма! Это самый большой выигрыш даст. P.S. Не связывайся ты с этими тактами без большой необходимости. |
|
|
Дата: Ноя 12, 2003 21:11:00 stres спасибо |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063 |