Показать сообщение отдельно
Старый 01.10.2006, 20:08   #3
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Методы оптимизации

Конечно, рассмотренные выше методы не являются исчерпывающими. Рассмотрим ещё несколько видов оптимизации:

1) "Замена условий формулой"
Это просто замена нескольких IF одной формулой. Вот основные виды:

а)"Переключатель двух состояний"
То есть просто переменная, которая может принимать значения 1 или 0 :
If KeyHit(57) N=1-N
или
If KeyHit(57) N=Not(N)
Всё просто.

б)"Преключатель N состояний"
Это переменная, которая может принимать значения 0,1...N :
If KeyHit(57) K=(K+1) Mod N
в)"Минимумы и максимумы"
Часто используется для переменных, которые возратают (или уменьшаются) только до какого-то определенного значения (например для скорости):
Speed=Speed + (1 And Speed < 2)*.5
г)"Модули"
Используется реже, например здесь:
вместо
If EntityPitch(cam)<75 And EntityPitch(cam)>-75 Then
можно использовать
If Abs(EntityPitch(cam))<75 Then

2)"Исключение медленных операций"
Например, если вам надо определить расстояние между точками в 2D ( в 3D всегда исрользуйте EntityDistance - эта команда значительно быстрее любых подсчетов через координаты!), вы наверняка используете что-то вроде этого:
 
d=Sqr((x1-x2)^2+(y1-y2)^2)
 
If d<10 Then
  ...
End If
Но вы должно быть знаете, что Sqr - ОЧЕНЬ МЕДЛЕННАЯ команда, поэтому лучше написать так (как бы возвести все в квадрат):
 
d=(x1-x2)^2+(y1-y2)^2
 
If d<100 Then
  ...
End If
Результат от этого не изменится, а скорость выполнения увеличится!

P.S. Ну вот вроде все ! Если знаете что-то еще, добавляйте.
(Offline)
 
Ответить с цитированием