Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.15;
Скачать: CL | DM;

Вниз

Обратная матрица. Метод Гаусса.   Найти похожие ветки 

 
palva ©   (2007-06-09 17:17) [40]

> static void Inv2(double M1[4][4], double M2[4][4]) передаётся весь массив вроде как
Вроде как нет:

  ;   Inv2(A3, InvA3);
  ;
?live16385@16: ; EBX = B, ESI = A, EDI = &T
@10:
push      edi
lea       eax,dword ptr [esi+80]
push      eax
call      @Inv2$qpa4$dt1
add       esp,8


 
palva ©   (2007-06-09 17:39) [41]

Нашел разницу. Delphi использует передачу параметров в регистрах, а C кладет в стек. Надо бы поставить в C __fastcall.


 
palva ©   (2007-06-09 17:49) [42]

> Надо бы поставить в C __fastcall.
Не помогло. Параметры стали передаваться через регистры, но работать стало даже медленнее - 328 тиков. Не пойму, в чем дело.


 
ferr ©   (2007-06-09 18:01) [43]

Может стоит включить режим RELEASE, если он не включен?


 
Alx2 ©   (2007-06-09 21:45) [44]

Так и не понимаю, чего добиваетесь с этой банальщиной. Скорострельность работы? Оно вроде бы давно и успешно на подобных задачках делается компиляторами.

Интересно погрешность было б минимизировать. Но лениво. Совсем не вижу мелодрамы "мир и матрица 4x4". :)


 
@!!ex_   (2007-06-09 21:50) [45]

> [44] Alx2 ©   (09.06.07 21:45)

Ну так и какой из приведенных вариантов на ваш взгляд лучше?


 
Alx2 ©   (2007-06-09 22:00) [46]

>@!!ex_   (09.06.07 21:50) [45]

Насчет погрешности? Думать надо. Не готов сказать сейчас.
Насчет скорости - я через Maple прогоняю формулы с минимизацией на промежуточные вычисления и потом на Intel C++ 8.0 с SSE2 - оптимизацией получаю шустрые вещи. Если сходимость есть - забиваю. Иначе - ад. :)


 
palva ©   (2007-06-09 22:21) [47]

> Так и не понимаю, чего добиваетесь с этой банальщиной.
Думаем, как уважить просьбу автора - сделать быстрее.


 
@!!ex_   (2007-06-09 22:24) [48]

Кстати, я хочу заметить, что я - олень, в лучшем смысле этого слова...
В своей процедуре выполняю преобразования...
И оставляю матрицу в старом виде...
ТОт у меня нифига не получаются правильные теневые объемы, если объект повернут... :))))))))


 
Alx2 ©   (2007-06-10 11:16) [49]

Тоже увлекся :)
Получилось инвертировать за 500 тиков на P4 HT


 
Alx2 ©   (2007-06-10 11:30) [50]

Ого! Inv4 идет за 376 тиков.
А код от Maple за 500 тиков.
Да, есть смысл думать :)


 
Alx2 ©   (2007-06-10 11:36) [51]

Прогнал код через встроенный в компилятор профилировщик, потом попросил его оптимизировать на этой базе.

Inv4 получился всего 220 тиков. Класс!


 
palva ©   (2007-06-10 23:17) [52]

Alx2 ©   (10.06.07 11:36) [51]
А какой это компилятор и какой был процессор?


 
Alx2 ©   (2007-06-11 02:44) [53]

>palva ©   (10.06.07 23:17)
процессор P4 HT 2800 Mhz
Компилятор Intel C++ 8.0 с опциями /G7 /QxW /O3 /Qprof_use с первоначальной подгонкой опцией /Qprof_gen


 
Jeer ©   (2007-06-13 18:34) [54]


> Alx2 ©   (10.06.07 11:36) [51]



> Inv4 получился всего 220 тиков. Класс!


Действительно - "умненький" icl. Но это уже тяжелое орудие:))
На P4 2.8GHz без HT посредством IC v.5 получаем 450 тактов CPU.
D7 устойчиво дает 850 тактов.
Кстати, FreePascal v.2.0.0 хуже - 950 тактов



Страницы: 1 2 вся ветка

Текущий архив: 2007.07.15;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.016 c
15-1181617894
ZMRaven
2007-06-12 07:11
2007.07.15
на форум лезут кул хацкеры?


2-1182531715
nord489
2007-06-22 21:01
2007.07.15
Копирование при помощи OpenDialog


15-1182156303
AntiUser
2007-06-18 12:45
2007.07.15
Чешские хакеры ввергли в панику всю страну


15-1181392158
Игорь Шевченко
2007-06-09 16:29
2007.07.15
Компания Codegear Borland проводит семинары


2-1181021026
Цукор5
2007-06-05 09:23
2007.07.15
запрос с датой и временем