forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Поворот массива точек (http://forum.boolean.name/showthread.php?t=6806)

zheland 08.10.2008 21:22

Ответ: Поворот массива точек
 
Цитата:

Сообщение от jimon (Сообщение 88268)
SBJoker
а cos и sin одного угла можно вообще одной операцией посчитать

Это я и имел в виду.
Оно вроде быстрее.
Цитата:

Сообщение от SBJoker (Сообщение 88265)
Неверно, на современном этапе развития процессор вычисляя Синус и Косинус тратит времени меньше чем тратится при доступе к памяти чтобы прочитать готовое значение.

Нет.
Прочитать готовое значение—1 такт.
Синус и Косинус—241(193-279) тактов на процессоре i80486.
Но я думаю немогло это так быстро уменьшится.
Потом я читал что где-то даже увеличивалась.
Во первых сложная операция, во вторых сопроцессор(FPU) работает медленней процессора.

SBJoker 08.10.2008 21:49

Ответ: Поворот массива точек
 
Блин ну проверь, что быстрее будет выборка по таблице или расчёт на месте. И сам удивишся но выборка из заранее просчитаного массива проигрывает и оч. сильно.

Ибо! Расчёт син и кос на совр процессоре с частотой пусть 2000Mhz занимает хоть и много тактов, но они проводятся со скоростью 2000Mhz, а выборка из памяти ДДР-2 при частоте 400 Mhz, уже проигрывает в скорости в 5 раз на такт, но чтобы прочитать из памяти нежен не один такт! а несколько! А именно суммируем все 4 основновные задержки у меня это 4-4-4-16 в сумме(28нс) так что нетрудно догадаться что чтение займёт больше.

Вот если таблицу синусов загнать в кэш процессора то да, скорость будет намного больше вычисления.

Кароче сделай тест, который считает пару десятков тысяч синусов, и берущий из таблицы алгоритм. На современном компе быстрее будет расчёт. На древнем 486м быстрее будет из таблицы.

З.Ы. значения из таблицы так же сильно проигрывают в точности, т.к. расчёт таблицы ведётся с опр. шагом, и код функции выбирающий ближайшее значение так же внесёт вклад в задержки.

jimon 08.10.2008 21:50

Ответ: Поворот массива точек
 
drunnik
в последнее время в x86 процессорах архитектура поменялась, теперь в центре стоит risc ядро, а вокруг него обвязка x86 выполненая в большей части на микрокоде
потому такт как рабочая единица сложно применима, да и данные для 80486 слишком сильно устарели
а выборка из масива, да, зачастую медленее расчёта на процессоре

Черный крыс 10.10.2008 14:48

Ответ: Поворот массива точек
 
Тоже сначала сильно удивилсо....когда увидел результаты тестов Оксида в модуле oxi.SinCos. Провел независимое тестирование....это подтвердилось. Теперь тока на проце и щитаю....стараясь - где нужно сразу юзать sincos().

Если Джокеру надо повернуть полигон, вершины которого загнаны в массив, - SetRotation ? Полигон можно хэндлить. а насчет 2-го то тут уже чистая математика.


Часовой пояс GMT +4, время: 23:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot