![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
оптимизация: что быстрее? [D5, WinXP]
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) содержит примеры использования пакета даже на Делфи (!), что есть великая редкость для других производителей ПО.