|
28.06.2011, 10:37
|
#1
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
"Ускорение" функций
void draw_string(uint8_t font_id, uint16_t x, uint16_t y, char *str)
{
gfx_point2d_t pos;
gfx_rect_t rect;
int i, nchar,n,m;
pos.x = x;
pos.y = y;
rect.width = 24;
rect.height = 24;
i = 0;
while (str[i] != 0) {
nchar = str[i];
pos.x+=12;
for(n=0;n<16;n++){
for(m=0;m<16;m++){
if(n*16+m==nchar){
//pos.x = i*24;
rect.x =m*24;
rect.y =n*24;
gfx_set_colorrop(0xcc);//api функции
gfx_sprite(font_id, &rect, &pos);//api спрайта,рубит rect'ом ресует в pos
}
}
}
i++;
}
}
пришлось писать такую функцию,ну как видно много циклов-меньше скорость,как "ускороить" её?(пока на скорость не влияет)
//целый корень....
int isqrt(unsigned x) {
unsigned m, y, b;
m = 0x40000000;
y = 0;
while(m != 0) { // Do 16 times.
b = y | m;
y = y >> 1;
if (x >= b) { x = x - b; y = y | m; }
m = m >> 2;
}
return y;
}
float fsqrt(unsigned float x){//дробный корень с 3 числами после знака...
int p=isqrt(x*100000);
float n=(1.0*x)/(p*p);
int s=isqrt(n*1000000);
float m=1.0*p*(s/1000.0);
return m/1000.0;
}
а эта считает корень без сопра(сопроцессора),как видно много делений на большие числа и умножение,а пользоваться смещением не умею.. подкинте идеи.
|
(Offline)
|
|
28.06.2011, 10:49
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: "Ускорение" функций
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
28.06.2011, 11:05
|
#3
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: "Ускорение" функций
м,никак,у меня компилятор на строчки asm'а ругается,таких я уже много нашел...
|
(Offline)
|
|
28.06.2011, 16:53
|
#4
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: "Ускорение" функций
квадратный корень с минимальной точностью
|
аы аы. насколько неточен? для дистанции кто-нибудь пробовал юзать? или вообще где-нибудь
|
(Offline)
|
|
28.06.2011, 18:21
|
#5
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: "Ускорение" функций
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Tadeus за это полезное сообщение:
|
|
29.06.2011, 02:13
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: "Ускорение" функций
подкиньте идеи как придумать теорему Пифагора !! (це)
|
(Offline)
|
|
29.06.2011, 04:08
|
#7
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: "Ускорение" функций
и сколько погрешность?лень проверять
|
(Offline)
|
|
29.06.2011, 04:12
|
#8
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: "Ускорение" функций
НУ КОЛЬ ЕСТЬ УЖЕ ВСЁ,синус(косинус) никто не знает как посчитать тогда?а то есть.но что-то не робит...
|
(Offline)
|
|
29.06.2011, 10:27
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: "Ускорение" функций
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
29.06.2011, 11:33
|
#10
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: "Ускорение" функций
Я это мог и в вике посмотреть,а толку,у меня есть функция sin по рядам:
""лень искать""
100% есть и в коде у кого-нить....
|
(Offline)
|
|
29.06.2011, 15:17
|
#11
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: "Ускорение" функций
ленивый оптимизатор - это оксюморон.
ты тупой, какое отношение ты имеешь к оптимизации?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
29.06.2011, 20:03
|
#12
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: "Ускорение" функций
а ещё есть асм-функция sincos - может быть полезно (мне было полезно)
http://www.gamedev.ru/code/tip/?id=3820
|
(Offline)
|
|
30.06.2011, 00:15
|
#13
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: "Ускорение" функций
sin и cos неплохо в ряд Тейлора.
Только значения больше пи (меньше минус пи) лучше не запихивать
вроде sin(x)=x-x3/3!+x5/5!-x7/7!...
P.S. с косинусом похоже, но там только чётные степени. Чем больше запишешь тем больше точность
P.P.S. А если нужна запредельная скорость с небольшой точностью то создай массив с поссчитанными значениями))
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
30.06.2011, 00:17
|
#14
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: "Ускорение" функций
Сообщение от Igor
Только значения больше пи (меньше минус пи) лучше на запихивать
|
ну-ка - ну-ка?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2011, 01:53
|
#15
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: "Ускорение" функций
Сообщение от Igor
P.P.S. А если нужна запредельная скорость с небольшой точностью то создай массив с поссчитанными значениями))
|
Заблуждение, это было актуально во времена медленных процессоров.
В данный момент честный расчёт sin / cos занимает меньше чем выборка из памяти. Можете замутить тест, удивитесь результатам.
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:14.
|