Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.069 c
15-1181847976
jum
2007-06-14 23:06
2007.07.15
Подскажите плз....


2-1182281812
Listt
2007-06-19 23:36
2007.07.15
ListBox и колонки


2-1182412463
NewBy
2007-06-21 11:54
2007.07.15
Почему не работает подсчет нод в чужом TreeView?


15-1181691118
programmerts
2007-06-13 03:31
2007.07.15
Глюк с Delphi 6.


15-1182220216
Slider007
2007-06-19 06:30
2007.07.15
С днем рождения ! 18 июня 2007 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский