Показать сообщение отдельно
Старый 05.12.2011, 02:27   #11
Черный крыс
 
Сообщений: n/a
Ответ: Скруглённые уголки на BlitzMax

Особого прироста не будет, так как массив аллокируется в 24 байт, а это происходит быстро.

Основной тормоз функции - это расчеты синуса и косинуса.

Как тебе известно, стандартная функция DrawOval() - прежде чем отрисовать круг 64 раза вызовет функцию Sin() и еще столько же вызовит функцию Cos().
А если рисовать 8 кружочков - то получается 64 * 8 = 512 вызовов на каждую функцию!

В моей функции есть параметр "corner" который определяет количество ребер.
Если ребер например 5 то получится 5 * 4 = 20 вызовов функций Sin() и Cos().

Можно это дело оптимизировать - занести в кэш результаты вычислений Sin и Cos а затем подставить их. Тоесть это дело можно довести до 5 вычислений Sin и Cos при 5 ребрах. А можно еще при этом использовать функцию SinCos() - тогда пролизводительность еще удвоится.

Вобсчем, оптимизировать еще можно... =)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо за это полезное сообщение:
Dzirt (21.02.2012), moka (05.12.2011)