Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 03.10.2006, 01:06   #16
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Методы оптимизации

Удобным так же может оказаться более абстрактная реализация, описанного tormoz-ом метода: присваивать имени меша (name) хендл информационной структуры, а не хендл типа, поставленного в соответсвиее мешу напрямую. Это позволяет проводить более непривязанный анализ, и даже создать жалкое подобие ООП: в функцию передаётся entity пикунтого меша, из имени entity извлекается квази-укзатель на информационную структуру, получаем доступ к структуре, узнаём: к какому типу объектов поставлен в соответствие данный меш, квази-укзатель на конкретный элемент этого типа, и всё что нам необходимо.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 03.10.2006, 02:56   #17
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Методы оптимизации

добавлю еще немного про оптимизацию.

во первых постарайтесь избегать делений например a/5 лучше заменить на a*0.2, так как второй вариант раза в три быстрее.

если число нужно умножить на что то вроде 2, 4, 8, 16 и т.д. или тем более разделить то можно обойтись логическим сдвигом (который рулит ). например a/16 можно заменить на a shr 4, для умножения соответственно a shl 4. четверка это степень двойки для число 16.

дополнительное время отнимают вызовы функций , причем чем больше параметров чем больше времени они отнимают.

очень быстро выполняются логические операции (or, xor, and, not).

пока все.
(Offline)
 
Ответить с цитированием
Старый 03.10.2006, 08:52   #18
jimon
 
Сообщений: n/a
Re: Методы оптимизации

во первых постарайтесь избегать делений например a/5 лучше заменить на a*0.2, так как второй вариант раза в три быстрее.
зависит от процесора

если число нужно умножить на что то вроде 2, 4, 8, 16 и т.д. или тем более разделить то можно обойтись логическим сдвигом (который рулит )
ето правильно, хотя некоторые компиляторы сами меняют умножение\деление на сдвиги

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

очень быстро выполняются логические операции (or, xor, and, not).
все логические операции являются самыми быстрыми из всех вообще
 
Ответить с цитированием
Старый 03.10.2006, 13:08   #19
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Методы оптимизации

Сообщение от jimon
втом то и дело что блиц конвертит код в asm
А какая разница? Главное как он конвертит.
Ты у себя проверял оба варианта? (с not state и c 1-state)
Я проверил - 1-state быстрее выполняется, у меня по крайней мере.

И еще, может я чего то не допонял, почему это NOT быстрее SUB? Ну теоретически-то да - быстрее, но на практике у меня одинаковы
Проверял на пурике
state = #False
time = GetTickCount_();timeGetTime_()
For i = 0 To 10000000
   ;                          ;Ticks
   !MOV eax, dword[v_state]   ;1
   !NOT eax                   ;1
   !MOV dword[v_state], eax   ;1
Next
MessageBox_(0, Str(timeGetTime_() - time), "", #MB_OK)

state = #False
time = GetTickCount_();timeGetTime_()
For i = 0 To 10000000
   ;                          ;Ticks
   !MOV eax, 1                ;1
   !SUB eax, dword[v_state]   ;2
   !MOV dword[v_state], eax   ;1
Next
MessageBox_(0, Str(timeGetTime_() - time), "", #MB_OK)

End
оба варианта показывают 31
ЗЫ
Может дело в проце?
P4 630 Prescott 3.0 Ghz 2x
(Offline)
 
Ответить с цитированием
Старый 03.10.2006, 18:57   #20
jimon
 
Сообщений: n/a
Re: Методы оптимизации

Cyan
тут лутче писать на чистом asm
и двух ядерный проц тут ничего толком не дает
хотя лутче проверить еще на amd
мож какаято оптимизация в cpu стоит ? хотя хз - я же не intel
 
Ответить с цитированием
Старый 04.10.2006, 07:41   #21
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Методы оптимизации

jimon
Писал и на чистом асм в пурике, и на FASM - один и тот же результат - скорость выполнения одинаковая.
(Offline)
 
Ответить с цитированием
Старый 04.10.2006, 08:44   #22
jimon
 
Сообщений: n/a
Re: Методы оптимизации

Cyan значит ето скорость ALU...
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
A* и способы его оптимизации SubZer0 Алгоритмика 29 24.01.2011 12:10
Методы zheland BlitzMax 5 22.11.2007 22:58
Достижения Оптимизации johnk 3D-программирование 42 19.08.2007 13:46
еффективные методы логинга jimon C++ 7 21.02.2006 23:23


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com