Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12

Быстрый канвас [Delphi, Windows, ХР]


@!!ex ©   (26.02.09 08:03[40]

> [39] AssemblerWorld.Narod.Ru   (26.02.09 03:50)

Не будет.
1) Надо понимать, что современные компилятор проводят очень охренительную оптимизацию, не факт что человек в разумные сроки сможет сделать также.
2) Производсительность если и будет выше, то на копеечку. А скорость разработки упадет в разы.

Единственное что, имеет смысл операции с векторами переписать на MMX или SSE. Или пользоваться компилерами, которые сами это умеют.


Sapersky   (26.02.09 16:12[41]

Delphi, к сожалению, не относится к охренительно оптимизирующим компиляторам. Хотя, заглядывая периодически в CPU window, можно "подтюнить" паскалевский код почти до уровня asm. И лично я предпочитаю именно такой "тюнинг", используя asm только если компилятор совсем уж тупит и никак не получается его вразумить. Всё-таки паскалевский код гораздо лучше читается и легче модифицируется (пусть даже с нарушением "тюнинга", но всё же это лучше, чем сидеть и мучительно пытаться понять написанный пару лет назад столбик трёхбуквенных матов).


@!!ex ©   (27.02.09 13:03[42]

> [41] Sapersky   (26.02.09 16:12)

В принципе когда говорил об оптимизации, имел ввиду скорее С++ компиляторы, чем дельфи. Хотя и дельфи очень даже не плох.


Вася   (28.02.09 00:29[43]

Я сделал по таблице, но особого прироста скорости нету (программирую в Delphi 7)...(

Нашел ещё вычисление по вот такой функции:
[CODE]
Const                                             //глобальные
     sin1: Double=7.61e-03;
     sin2: Double=-1.6605e-01;
     sin3: Double=1;

function ASin(fAngle:Single):Single;
asm
fld fAngle.Single
fmul fAngle.Single
fld sin1.Double
fmul st(0),st(1)
fld sin2.Double
faddp st(1),st(0)
fmulp st(1),st(0)
fadd sin3.Double
fmul fAngle
end;
[/CODE]

Считает в два раза быстрее таблиц, но точность сильно хромает...
Да и как-то не пойму для какого промежутка fAngle синус от него считается правильно...

Кто-нибудь может объяснить как этот код вообще работает и на каком он языке?
Ну и улучшить его точность хотя бы до 5-го знака после запятой?


@!!ex ©   (28.02.09 08:41[44]

> Считает в два раза быстрее таблиц, но точность сильно хромает...
> Да и как-то не пойму для какого промежутка fAngle синус
> от него считается правильно...

Вообще гнаться за скоростью работы синуса сейчас смысла особо нету...


> Кто-нибудь может объяснить как этот код вообще работает
> и на каком он языке?
> Ну и улучшить его точность хотя бы до 5-го знака после запятой?

Язык - ассемблер. Как работает - х.з., видимо использует какую-то приближенную форумулу вычисления.
Улучшить врядли получится.


Б   (28.02.09 10:59[45]

> Я сделал по таблице, но особого прироста скорости нету (программирую в > Delphi 7)...(

Не может быть.

Если нужно вычислить срузу и COS и SIN, то процедура Math.SinCos, сделает это в 2 раза быстрее, чем их вычисление по одиночке.


Pavia ©   (28.02.09 14:32[46]


> 1) Надо понимать, что современные компилятор проводят очень
> охренительную оптимизацию, не факт что человек в разумные
> сроки сможет сделать также.2) Производсительность если и
> будет выше, то на копеечку. А скорость разработки упадет
> в разы.

1) А ты сам проверял? Вся эта охренительная оптимизация ломается как только идут вместо констант вычисление чего либо. На циклах компилятор уже плохует. Где-то получше где-то похуже. Человек запросто обгоняет компилятор. И это я говорю о компиляторе от МС. При этом Delphi отстает не намного.

2) Прирост скорости от 2 раз до 50раз (к примеру БПФ от интел в 30раз быстрее прямой реализации). А вот скорость разработки упадет.


> Не может быть.
Может скорость вычисления синуса на современных процессорах составляет менее 120 тактов. Наиболее быстрым вариантам считается вычисление синуса на месте используя приблеженные формулы. У интел есть математическая библиотека в ней можно глянуть различные варианты.


@!!ex ©   (28.02.09 14:40[47]

> 1) А ты сам проверял? Вся эта охренительная оптимизация
> ломается как только идут вместо констант вычисление чего
> либо. На циклах компилятор уже плохует. Где-то получше где-
> то похуже. Человек запросто обгоняет компилятор. И это я
> говорю о компиляторе от МС. При этом Delphi отстает не намного.


Я сам читал кучу тестов.
Плюс насколько я вижу, ни одна здравомыслящая компания не делает игры на ассемблере.
Да и вообще только полный идиот(ИМХО), будет писать всю игру на ассемблере. АСМ вставки в критичных местах - это максимум.


DomiNickDark   (28.02.09 17:25[48]

> ни одна здравомыслящая компания не делает игры на ассемблере

Делает... :))

Вот пример: http://dominickdark.narod.ru/Farbrausch-Games.Html


@!!ex ©   (28.02.09 17:48[49]

> [48] DomiNickDark   (28.02.09 17:25)

Это For Fun Only.


имя   (28.02.09 22:34[50]

Удалено модератором


Вася   (01.03.09 02:18[51]

>  Не может быть.

Может...((

У меня жуткая формула... А нужно пересчитать её для каждого пикселя изображения...(
На весь мой экран получаются миллионы вычислений синуса...((

Может как-то сделать полноэкранный режим лучше будет?
При размере "канваса" 800х600 скорость ещё сносная выходит...


имя   (01.03.09 02:20[52]

Удалено модератором


Вася   (01.03.09 02:24[53]

Э... И что в этой анкете искать?..


Дуб ©   (01.03.09 05:11[54]


> У меня жуткая формула... А нужно пересчитать её для каждого
> пикселя изображения...(
> На весь мой экран получаются миллионы вычислений синуса.
> ..((

Для экрана? Для каждого пиксела? И вся эта информация визуально значительна? А логи на 100 метров, мы в туалете на релаксацию читаем?


Pavia ©   (01.03.09 09:34[55]


> У меня жуткая формула... А нужно пересчитать её для каждого
> пикселя изображения...(На весь мой экран получаются миллионы
> вычислений синуса...((

А зачем там что синусы меняются? Если меняются то неплохобы знать закономерность.
А если не меняются то их вычислить заранее вне цикла.


Б   (01.03.09 10:19[56]

2 Вася
> У меня жуткая формула...

Что-то не упомянул, каким способом выводишь график.
И вообще, что ты делаешь?


Sapersky   (01.03.09 19:00[57]

Кто-нибудь может объяснить как этот код вообще работает

Скорее всего разложение в ряды Тейлора.

У меня жуткая формула... А нужно пересчитать её для каждого пикселя изображения...(
На весь мой экран получаются миллионы вычислений синуса...((


См. [27]. Тоже синусы-косинусы через таблицы, и ничего не тормозит.


Вася   (01.03.09 23:44[58]

>>> Для экрана? Для каждого пиксела? И вся эта информация визуально значительна? А логи на 100 метров, мы в туалете на релаксацию читаем?

Что-то не понял, что вы имели ввиду...

>>> А зачем там что синусы меняются? Если меняются то неплохо бы знать закономерность

В том-то и дело, что меняются... Причём некоторые коэффициенты рэндомом... :(

>>> Тоже синусы-косинусы через таблицы, и ничего не тормозит

Для 800х600 не тормозит... А на весь экран - тормозит... :(

>>> Что-то не упомянул, каким способом выводишь график. И вообще, что ты делаешь?

Почему "график"? Для графика не нужно было бы все пиксели перебирать...

Я свой СкринСейвер делаю... :)

Правда нормального примера исходника СкринСейвера на Делфи7 так и не нашел...
Самих примеров-то множество (хотя б на "ДелфиВорлд"), но каждый как-то по своему глючит... :(


@!!ex ©   (02.03.09 00:00[59]

у меня 1680х1050 фуллскрин несколько обработок всех пикселей всего экрана(и там далеко не только вычисление синуса) не тормозит...
а почему? А потому что пиксели экрана эта та штука, которую надо считать на видухе, а не на ЦПУ.


Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 версия для печати
Обсуждение закрыто


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо