Re: Какая же это нахрен оптимизация?
От: ZORK Россия www.zorkaltsev.com
Дата: 11.01.02 11:10
Оценка:
Здравствуйте Кирпа В А, Вы писали:

КВА>Есть класс для реализации векторной алгебры

КВА>Привожу фрагмент реализации одного цикла (Release Version; Optimize — Maximize Speed)

КВА>; 498 : register int index = 0;


КВА> 00043 33 c0 xor eax, eax

КВА>$L85381:

КВА>; 499 : do

КВА>; 500 : {
КВА>; 501 : tmp.pMO[index++] *= Number;
КВА>; 502 : }
КВА>; 503 : while (index < Vector2.Dimension);

КВА> 00045 8b 4c 24 14 mov ecx, DWORD PTR _tmp$[esp+44]

КВА> 00049 40 inc eax
КВА> 0004a d9 45 0c fld DWORD PTR _Number$[ebp]
КВА> 0004d dc 4c c1 f8 fmul QWORD PTR [ecx+eax*8-8]
КВА> 00051 dd 5c c1 f8 fstp QWORD PTR [ecx+eax*8-8]
КВА> 00055 3b 46 04 cmp eax, DWORD PTR [esi+4]
КВА> 00058 7c eb jl SHORT $L85381

КВА>Почему сначала идет inc eax а затем fmul и fstp идут с -8 Ведь если inc eax перенести после fstp, то

КВА>не надо будет -8 Во первых короче на 2 байта да и быстрее наверное Не сочтите меня мелочным но

КВА>


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

А если действительно надо быстро и на больших объемах данных, то смотри Intel Performance Library ( http://www.intel.com/software/products/perflib/ )

-Zork
Думать надо ...головой :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.