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

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

оптимизация: что быстрее? [D5, WinXP]


Страницы:   1 2

tButton ©   (2006-06-09 06:14:00) 

a*2или a+a, если a: real;?
(сие творится многократно в ходе цикла и потому выбор более быстровыполняемого действия очень важен)


tButton   (2006-07-22 14:33:00) [1]


> ошибочно, по-моему...

вместо четырёх расчётов три. пл-млему нормально =)


KilkennyCat   (2006-07-21 17:51:00) [2]

>
> vx:=dx/d; и vx:=vx*v; можно заменить на d:=v/d; и vx:=dx*d;
> одной строчкой меньше


ошибочно, по-моему...


tButton   (2006-07-21 17:45:00) [3]

всё. путём =) апокалипсиса небудет =) хотя планеты всё же склонны падать на зведу либо улетать в дальний космос =)


Jeer   (2006-07-21 17:05:00) [4]

Ну чем там все дело кончилось-то, в точке взрыва ?


tButton   (2006-07-21 16:53:00) [5]

всплыло =)


Jeer   (2006-07-21 15:23:00) [6]

Моделирует Вселенную, чтобы обратным ходом вернуть все к точке Большого взрыва.


Tonich   (2006-07-21 15:00:00) [7]


> tButton ©

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


Jeer   (2006-07-21 12:10:00) [8]


> подменяет тип real типом extended!


double


_mik   (2006-07-20 18:19:00) [9]


> Cовременные FPU выполняют умножение практически столь же
> быстро, как и сложение, так что ловить здесь блох нет повода
> ... Лучше будет сосредоточить внимание на оптимальность
> "подготовительных" операций: загрузку операндов и выгрузку
> результата - они ощутимо больше влияют на сквозную производительность
> алгоритма, т.к. при этом для Real-типа всякий раз происходит
> прямое и обратное преобразование между Real и Extended.
>


вообще то все компиляторы дельфи начиная с delphi 2 не используют тип
real, он оставлен только для совместимости со старым ккодом!
компилятор автоматически подменяет тип real типом extended!


tButton   (2006-06-10 20:36:00) [10]


> Не понял. Возми ты древовидную структуру, где узел есть
> не что иное, как геометрический центр масс двух других.
> У тебя же все равно идет сложение векторов. Расход памить
> увеличится в 2 раза. Из сложности (N+1)N/2 получишь сложность
> 2*N. Могу ошибаться, прикинул в уме.

честно, не понял =)
1) разница между моделью и иммитацией модели в степени достоверности. иммитация лишь создаёт видимость, на деле я могу просто запузырить каждой частице элиптическую орбиту и вычислять её положение в момент времени.
2) на память наплевать, критична скорость расчётов, а она от памяти слабо зависит.
3) MBo © предложил достаточно хороший вариант оптимизации цикла


Pavia   (2006-06-10 19:55:00) [11]


> Задача о притягивающихся частицах довольно известна :)
> И есть довольно много оптимизаций алгоритма, от выбора способа
> хранения данных до алгоритма обработки.
> Например, можно хранить точки в древовидной структуре, вышележащий
> узел представляет собой кластер близких точек, и обсчет
> идет прежде всего для кластеров...
> <Цитата>
>
>
> tButton ©   (10.06.06 15:53) [24]
> иные решения кроме как обсчёт "каждая к каждрй" не приемлимы,
>  ибо они иммитируют, а не моделируют.

Не понял. Возми ты древовидную структуру, где узел есть не что иное, как геометрический центр масс двух других. У тебя же все равно идет сложение векторов. Расход памить увеличится в 2 раза. Из сложности (N+1)N/2 получишь сложность 2*N. Могу ошибаться, прикинул в уме.


tButton   (2006-06-10 19:36:00) [12]


> Повторные вычисления-то  убрал?

теперь - да =)


MBo   (2006-06-10 16:12:00) [13]

>tButton
Повторные вычисления-то  убрал?


tButton   (2006-06-10 15:53:00) [14]

иные решения кроме как обсчёт "каждая к каждрй" не приемлимы, ибо они иммитируют, а не моделируют.

оптимизировал алгоритм согласно задумке.
время обсчёта сократилось с 300 с лишним мс до 125 мс
заменил тип всех переменных real на extended
время обсчёта выросло до 220 мс
вернул real - время вернулось к 125 мс
результатом доволен =)


Romkin   (2006-06-09 13:56:00) [15]

Задача о притягивающихся частицах довольно известна :)
И есть довольно много оптимизаций алгоритма, от выбора способа хранения данных до алгоритма обработки.
Например, можно хранить точки в древовидной структуре, вышележащий узел представляет собой кластер близких точек, и обсчет идет прежде всего для кластеров...


MBo   (2006-06-09 12:54:00) [16]

>Sapersky
>Intel Signal Processing Library Suite (IntelSPL)
>Если я правильно понял, бесплатно там дают только версию для Linux и for non-commercial use.

Года 4 назад интеловские библиотеки MKL, SPL, IPL, IJL были в свободном доступе на их сайте, потом они решили на них навариться...

>tButton
некоторые очевидные изменения
for i:=0 to high(pts) do
  for j:=i + 1 to high(pts)do // ни к чему каждую точку обрабатывать дважды
  begin
    d:=1./Dist(pts[i], pts[j]);// одно деление вместо двух
    vx:=dx *d;
    vy:=dy *d;
    pts[i].vx:=pts[i].vx+vx*quarq;
    pts[i].vy:=pts[i].vy+vy*quarq;
///////// здесь нужно вставить то же самое для j-й точки
  end;


Сергей М.   (2006-06-09 12:52:00) [17]


> бесплатно там дают только версию для Linux и for non-commercial
> use


Ну, как говорится, кто не успел, тот опоздал) .. Ведь когда-то Интел раздавал со своего сайта ISPL "нахаляву" ..

Впрочем на просторах Тырнета найти тот самый "халявный" пакет не представляет особого труда


Sapersky   (2006-06-09 12:27:00) [18]

т.е. имеет смысл отказаться от типа real в пользу extended?

Основатель проекта FastCode пишет, что лучше вообще в пользу Single:

http://dennishomepage.gugs-cats.dk/CodingForSpeedInDelphi.doc

По поводу теории MMX/SSE:

http://www.tommesani.com/

Т.е. можно найти и на русском, но на tommesani зато со схемами, что весьма полезно для понимания особо хитрых операций вроде упаковки/распаковки.

Intel Signal Processing Library Suite (IntelSPL)

Если я правильно понял, бесплатно там дают только версию для Linux и for non-commercial use.


Сергей М.   (2006-06-09 11:58:00) [19]

http://www.softkey.ru/catalog/program.php?ID=3793&progdesc=long


Сергей М.   (2006-06-09 11:50:00) [20]


> знакомо только слово MMX


MMX, конечно, вчерашний день, хотя многие производители ПО успешно используют MMX и сегодня.


> предвкушая отсутствие внятного руководства по использованию.


Интеловские библ-ки напротив, imho, снабжаются достаточно подробными справками и примерами.

Могу сказать, что, к примеру, пакет Intel Signal Processing Library Suite (IntelSPL) содержит примеры использования пакета даже на Делфи (!), что есть великая редкость для других производителей ПО.


Страницы:   1 2

Наверх

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