Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Асм рулит? [D5, Win2k]


Страницы:   1 2 3

debuger ©   (2004-09-30 17:45:00) 

Доброго времени суток.

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


Defunct   (2004-10-04 19:02:00) [1]

debuger ©   (04.10.04 18:49) [40]

потому что это просто пропуски. зачем там NOP'ы, если все равно эти команды никогда не исполняются.

вот пример:

db ??
db ??
db ??
Proc_Entry_Point:
< код процедуры >

Какая разница что будет на месте ??, если мы все равно начинаем выполнять код с Proc_Entry_Point


debuger   (2004-10-04 18:49:00) [2]

а почему тогда не nop'ы?


GuAV   (2004-10-03 23:29:00) [3]

Это тупо нули. Заполнение места. Чтобы процедуры были по смещению кратному 4.


Рыба   (2004-10-03 22:46:00) [4]

Кто-нибудь скажет зачем в генерируемом коде много идущих друг за другом строк:
add  [eax], al


GuAV   (2004-10-03 22:04:00) [5]


>  там ускорение в разы..

..однако Sha привел процедуру без асм, котороя тоже дала ускорение в разы.

довольно часто изменение алгоритма даёт больше ускорение чем переписывание на асм.


jack128   (2004-10-03 21:49:00) [6]

DSA ©   (01.10.04 12:05) [31]
Штатный оптимзатор кода работает достаточно хорошо. Можно неделю кодить и обнаружить, что получаещь увелечение скорости 3-5%.

смотри ветку, ссылку на которую дал GuAV. там ускорение в разы..


debuger   (2004-10-03 17:04:00) [7]

У меня распознавание видеопотока в риальном времени.
Тромозили две вещи:
- съем данных
- паганая рекусрия, которую быстро не опишешь.

Переписал первое, к скорости прибыло 3х.
Второе, особо сильно пока не прилизывается.

Все пасибо. Асма пока не хочу :)


Рыба   (2004-10-02 21:15:00) [8]

> GuAV ©  (02.10.04 21:11) [33]

ОК.


GuAV   (2004-10-02 21:11:00) [9]

Рыба ©   (02.10.04 21:06) [32]

Управлением Coprocessor Control Word можно понизить точность FPU. Однако не советую.

Приведенную функцию переписывать не нужно.


Рыба   (2004-10-02 21:06:00) [10]

Интересно, можно ли ускорить стандартную функцию Round?

from System.pas

procedure       _ROUND;
asm
       { ->    FST(0)  Extended argument       }
       { <-    EDX:EAX Result                  }

       SUB     ESP,8
       FISTP   qword ptr [ESP]
       FWAIT
       POP     EAX
       POP     EDX
end;


К примеру, сделать специально для типа Double?


DSA   (2004-10-01 12:05:00) [11]

Имею опыт написания асемблерных вставок. Результат:
1 Ассемблерные вставки сильно скорость не подымают. Штатный оптимзатор кода работает достаточно хорошо. Можно неделю кодить и обнаружить, что получаещь увелечение скорости 3-5%.
2 Много с этими вставками бился - пришел к выводу: попутки "вылизать" код - безполезная трата времени (убиваеться многог времени а реальный приост - единицы, реже десятки процентов). Единственный путь - глобальная оптимизация алгоритма с "ранним" отсечением тупиковых ветвей для просчета.
3 единственный путь оптимизации за счёт асм. вставок - использование ММХ и SSE инструкций с оптимизацией под конкретный процессор (заточка кода под особенности конвеера команд процессора). В этом случае возможно получить реальный результат.


Defunct   (2004-10-01 11:19:00) [12]

> Вопрос такой: рулят ли(по скорости канешна) асмовые вставки.
> Произвожу только вычисления(что-то на ковго-то умножить, отнять, усреднить), т.е. проэкт мой чисто вычислительного характера.

Ты работает с видео?
Если да, тогда тебе прямой путь с использованию SSE2
есть команды параллельного умножения и сложения сразу нескольких (4-х операдов с плавающей запятой).

> Если предидущий ответ положителен, дайте линки на доку по написанию таковых.

www.intel.com

Instruction Set Reference vol 2A-B.
Programming Guige vol 3

2 debuger: напиши здесь код какой-нить простенькой функции, которую ты наиболее часто используешь.


Erik1   (2004-10-01 11:10:00) [13]

Возможно дела не в самом алгоритме как таковом, а в вмособе его применения. Например как там выделяется память, что используется в качестве буфера, как передаются параметры, имеется ли рекурсия и пр... Все это относится не к матиматике алгоритма, а имено к програмированию. Вот это вам и могут здесь подсказать, к томуже небывает идеальных алгоритмов!


Sens   (2004-10-01 10:45:00) [14]

to debuger
А может опишешь задачу, которую пытаешься решить?
Как-то мне не понятно, какая такая задача может тормозить на 1,5Г???

У меня был неописуемый случай, когда сам свою прогу оптимизировал по скорости работы в ... очень много раз (скажу что в 1000-чи, не поверят). А задача была - разобрать log файл сквида и запихать его в базу (Access) для дальнейшей обработки.
~650000 строк сейчас обрабатывается на cel 1800 ~25сек (разбор строк, занесение в базу и предварительная обработка запросов), до этого было около 4-х часов. (АСМ не использовал).

Так что нужно с алгоритмом разобраться, а потом только думать об асме.

С уважением.


Amoeba   (2004-10-01 10:23:00) [15]

Если очень нужно, то материалы по asm'у на русском найдешь на сайте А.Подгорецкого


GuAV   (2004-09-30 23:05:00) [16]

Alekc   (30.09.04 22:57) [25]

Он оптимизирует достаточно хорошо в большинстве реальных ситуации. Всё же это не искуственный интеллект.
Он действует по шаблонам.
Например есть известный случай, такое часто бывает:
mov  ebx, eax
mov  eax, ebx


Alekc   (2004-09-30 22:57:00) [17]

Кстати, по поводу оптимизатора ЯВУ... напишите в дельфи несколько строчек "<variable> := 0;" и посмотрите на код после компиляции... если он на простейшем примере столько лишнего лепит, то что же будет на сложных циклах ?...


debuger   (2004-09-30 22:12:00) [18]

%)


GuAV   (2004-09-30 21:49:00) [19]

Никита ©   (30.09.04 21:31) [22]

да. именно к такому выводу и приводят ветки про биты и про поиск.


Никита   (2004-09-30 21:31:00) [20]

Можно оптимизировать любой код до максимального быстродействия.
А можно и асм вставку написать так чтоьы все грузилось полчаса.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо