|
FAQ Туториалы и часто задаваемые вопросы |
03.10.2006, 01:06
|
#16
|
Зануда с интернетом
Регистрация: 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
|
☭
Регистрация: 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
|
|
Re: Методы оптимизации
во первых постарайтесь избегать делений например a/5 лучше заменить на a*0.2, так как второй вариант раза в три быстрее.
|
зависит от процесора
если число нужно умножить на что то вроде 2, 4, 8, 16 и т.д. или тем более разделить то можно обойтись логическим сдвигом (который рулит )
|
ето правильно, хотя некоторые компиляторы сами меняют умножение\деление на сдвиги
дополнительное время отнимают вызовы функций , причем чем больше параметров чем больше времени они отнимают.
|
ето время настолько минимально что его можно не учитывать
очень быстро выполняются логические операции (or, xor, and, not).
|
все логические операции являются самыми быстрыми из всех вообще
|
|
|
03.10.2006, 13:08
|
#19
|
Знающий
Регистрация: 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
|
|
Re: Методы оптимизации
Cyan
тут лутче писать на чистом asm
и двух ядерный проц тут ничего толком не дает
хотя лутче проверить еще на amd
мож какаято оптимизация в cpu стоит ? хотя хз - я же не intel
|
|
|
04.10.2006, 07:41
|
#21
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: Методы оптимизации
jimon
Писал и на чистом асм в пурике, и на FASM - один и тот же результат - скорость выполнения одинаковая.
|
(Offline)
|
|
04.10.2006, 08:44
|
#22
|
|
Re: Методы оптимизации
Cyan значит ето скорость ALU...
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:30.
|