Осторожно! Сложение Делегатов!
Добавлено: 09 фев 2010, 02:19
Знаете ли вы, что объявленная "такой удобной" операция сложения делегатов, даёт 15-20 кратную потерю скорости вызова их методов?
Вот простой код проверки:
Вот, что мы имеем на выходе :
В обычном приложении, это не смертельно. Но, если код нагрузный, то лучше помнить об этой особенности.
Вот простой код проверки:
- Код: Выделить всё
delegate void TEst0();
TEst0 t0, t1, t2;
void Start ()
{
t0 = new TEst0(Reaction);
t1 = new TEst0(Reaction);
t2 = new TEst0(Reaction0);
t1 += t2;
float startTime = Time.realtimeSinceStartup;
for (int i = 0; i < 1000000; i++) t0();
Debug.Log("1 delegate : " + (Time.realtimeSinceStartup - startTime));
startTime = Time.realtimeSinceStartup;
for (int i = 0; i < 1000000; i++) t1();
Debug.Log("2 delegate : " + (Time.realtimeSinceStartup - startTime));
}
void Reaction()
{
}
void Reaction0()
{
}
Вот, что мы имеем на выходе :
В обычном приложении, это не смертельно. Но, если код нагрузный, то лучше помнить об этой особенности.