умножение в 20 раз быстрее деления!

Раздел, посвящённый самому важному - скорости.

Re: умножение в 20 раз быстрее деления!

Сообщение bitboy 04 апр 2011, 21:16

не на столько уж, хотя это вполне обоснованно.
bitboy
UNец
 
Сообщения: 27
Зарегистрирован: 16 мар 2011, 20:52
  • ICQ

Re: умножение в 20 раз быстрее деления!

Сообщение mentors 04 апр 2011, 21:51

bitboy писал(а):не на столько уж, хотя это вполне обоснованно.

Прикольно - поднял тему годичной давности ;)
Хотя уже версия 3 давно в обиходе, андроид не миф а реальность - старая тема актуальна в двойне :D
Обожаю холивар по теме "Выше, Дальше, Быстрее"... :-@
Аватара пользователя
mentors
UNITрон
 
Сообщения: 309
Зарегистрирован: 20 мар 2011, 19:32
Откуда: Россия

Re: умножение в 20 раз быстрее деления!

Сообщение Paul Siberdt 05 апр 2011, 08:45

- script.Foo() 200 раз быстрее SendMessage("Foo")
- Get Component(script) вместе со script.Foo() в 4 раза быстрее SendMessage("Foo")
:D
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: умножение в 20 раз быстрее деления!

Сообщение Zaicheg 05 апр 2011, 10:44

А при прямом вызове myTarget.GetComponent<MyScript>().SetTag("boo") будет иначе? У меня -- не иначе. Я не понял фишки.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: умножение в 20 раз быстрее деления!

Сообщение Paul Siberdt 05 апр 2011, 10:59

При вызове через ГетКомпонент будет так же и в 4 раза быстрее.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: умножение в 20 раз быстрее деления!

Сообщение DbIMok 05 апр 2011, 11:20

поэтому лучше использовать другие, более быстрые месседжи. какие-нибудь делегаты через быструю коллекцию.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: умножение в 20 раз быстрее деления!

Сообщение burlak 05 апр 2011, 11:27

DbIMok. С делегатами в юньке глаз да глаз нужен. При дестрое объекта, обязательно рвать связь - иначе плейер при вызове делегата вылетает без всяких исключений - походу даже встроенный плейер валится на месте. После мытарств пришел к выводу, что проще использовать что то типа адаптеров в Java или делегатов в Objective C - перед вызовом всегда можно проверить на true ну а сам вызов строго типизированый
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: умножение в 20 раз быстрее деления!

Сообщение DbIMok 05 апр 2011, 11:36

Код: Выделить всё
void OnEnable() { Msg.AddListener("PanelDrag", OnPanelDrag); }
void OnDisable() { Msg.RemoveListener("PanelDrag", OnPanelDrag); }

и горя не знаем
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: умножение в 20 раз быстрее деления!

Сообщение Paul Siberdt 13 апр 2011, 10:32

Как оказалось, Vector3.Angle работает примерно на 15% медленнее, чем нормализация + Vector3.Dot + Mathf.Acos + Mathf.Rad2Deg, а 60% времени в цепочке занимает нормализация векторов. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: умножение в 20 раз быстрее деления!

Сообщение DbIMok 13 апр 2011, 10:58

Синтаксис:
Используется csharp
public static float Angle(Vector3 from, Vector3 to)
{
  return (Mathf.Acos(Mathf.Clamp(Dot(from.normalized, to.normalized), -1f, 1f)) * 57.29578f);
}

public static float Clamp(float value, float min, float max)
{
  if (value < min)
  {
    value = min;
    return value;
  }
  if (value > max)
  {
    value = max;
  }
  return value;
}

видимо экономия получается за счет отсутствия Clamp в вашей цепочке
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: умножение в 20 раз быстрее деления!

Сообщение Paul Siberdt 13 апр 2011, 11:17

О, круто, спасибо... а где можно подсмотреть все эти внутренние реализации?

И есть ли возможность глянуть, скажем, листинг класса LineRenderer?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: умножение в 20 раз быстрее деления!

Сообщение DbIMok 13 апр 2011, 11:46

здесь ;) смотрите пост Zaicheg'a
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: умножение в 20 раз быстрее деления!

Сообщение alexz 13 апр 2011, 12:14

Paul Siberdt писал(а):О, круто, спасибо... а где можно подсмотреть все эти внутренние реализации?

И есть ли возможность глянуть, скажем, листинг класса LineRenderer?

Рефлектором: http://reflector.red-gate.com/download. ... AsUpdate=1
1) Он, правда, теперь платным стал, но есть две недели триала.
2) Не всё можно посмотреть, а только то, что написано на C#.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: умножение в 20 раз быстрее деления!

Сообщение DbIMok 13 апр 2011, 12:21

alexz писал(а):2) Не всё можно посмотреть, а только то, что написано на C#.

можно смотреть любой managed (.net, mono) код. не важно на чем он написан, на C#, UnityScript или Boo
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: умножение в 20 раз быстрее деления!

Сообщение gnoblin 13 апр 2011, 14:23

Не очень удобно просматривать код на нестроготипизированном джаваскрипте и бу.
И еще корутины в кашицу превращаются :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Пред.След.

Вернуться в Оптимизация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1