2015-03-24 3 views
1

Есть ли разница в производительности с этими двумя методами? Один из них создает локальные переменные метода, а другой использует переменные класса.Разница в производительности: переменная класса и переменная метода

public float damping = 10f; 

void RotateToMousePointer() 
{ 
    Vector3 dir = _shipControls.GetMousePostionInWorldSapce() - transform.position; 
    float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90; 
    Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward); 
    transform.rotation = Quaternion.Slerp(transform.rotation, q, Time.deltaTime * damping); 
} 

Vector3 dir; 
float angle; 
Quaternion q; 
void RotateToMousePointer2() 
{ 
    dir = _shipControls.GetMousePostionInWorldSapce() - transform.position; 
    angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90; 
    q = Quaternion.AngleAxis(angle, Vector3.forward); 
    transform.rotation = Quaternion.Slerp(transform.rotation, q, Time.deltaTime * damping); 
} 
+8

Первое правило вопросов «perfomance»: протестируйте его самостоятельно. – crashmstr

ответ

1

Да, есть некоторая разница в производительности, вызванная переменной float angle;.

Поскольку float является тип значения, то angle будут сохранены:

  • в stack, когда объявлена ​​как локальная переменная метода;
  • в heap если указано как поле для примера.

С точки зрения производительности с использованием стека немного быстрее, чем куча.

Но в реальном приложении вы не будете «чувствовать разницу».

+0

Весь аргумент «стек против кучи», в то время как, скорее всего, правда в этом случае, не всегда так. Читайте сообщение в блоге Эрика Липперта по теме (http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx) –

0

Нет, не существует. Единственное различие заключается в том, что dir, angle и q недоступны вне метода при использовании первого подхода. Если вам не нужно обращаться к ним в другом месте, придерживайтесь этого.

+0

На самом деле, здесь крошечная разница в производительности. Рассмотрим место хранения переменной 'angle' - стек в первом случае и кучу во втором. –

+0

Стоит ли это отметить? Думаю, нет. Я бы назвал это микроменеджмент. –

 Смежные вопросы

  • Нет связанных вопросов^_^