Условие и переменные

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

Условие и переменные

Сообщение xakmenpro 15 фев 2016, 18:19

Всем привет. Давно мучает вопрос по теме оптимизации условий и использовании переменных. Есть у меня код, который перемещает джойстик в зависимости от настроек - слева или справа экрана. Черновой вариант получился такой
Синтаксис:
Используется csharp
    float x = objects[23].transform.GetChild(i).localPosition.x;

    if (PlayerPrefs.GetString("joyTo") == "left" && objects[23].transform.GetChild(i).localPosition.x > 0f || PlayerPrefs.GetString("joyTo") == "right" && objects[23].transform.GetChild(i).localPosition.x < 0f) x *= -1f;

    objects[23].transform.GetChild(i).localPosition = new Vector3(x, objects[23].transform.GetChild(i).localPosition.y, objects[23].transform.GetChild(i).localPosition.z);
 

После оптимизации код выглядит так
Синтаксис:
Используется csharp
objects[23].transform.GetChild(i).localPosition = new Vector3(objects[23].transform.GetChild(i).localPosition.x * (PlayerPrefs.GetString("joyTo") == "left" && objects[23].transform.GetChild(i).localPosition.x > 0f || PlayerPrefs.GetString("joyTo") == "right" && objects[23].transform.GetChild(i).localPosition.x < 0f ? -1f : 1f), objects[23].transform.GetChild(i).localPosition.y, objects[23].transform.GetChild(i).localPosition.z);
 

По русски говоря строчка выглядит вот так

позиция джойстика = new Vector3(Х координата джойстика * (условие ? -1f : 1f), Y координата джойстика, Z координата джойстика);

В редакторе код выглядит красивее - одной строчкой
Вопрос в чем, оптимизировал я его или усложнил? Стараюсь использовать меньше переменных и производить все вычисления в одной строчке, где то читал что так делать нельзя с сложными вычислениями и что лучше их присваивать перемнным, после обращаться к ним

а = позиция 1 - позиция 2;

если b=true то d = позиция 3 - позиция; иначе d = a * позиция 3;

позиция = d;

вместо

позиция = b ? позиция 3 - позиция : (позиция 1 - позиция 2) * позиция 3;


Нужны советы
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: Условие и переменные

Сообщение waruiyume 15 фев 2016, 18:24

А-А-А-А-А-А-А-А-А РОБОТЫ АТАКУЮТ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11111111111111ОДИНОДИН
http://c2.com/cgi/wiki?RulesOfOptimization
Подобные, анальные оптимизации, обоснованы, только на коде, который вызывается десятки тысяч раз, во всех других случаях- это просто мазохизм ;)
Кстати, обращение к массиву и индексатору- ниразу не быстрые операции, и если один объект нужен несколько раз, то назначение его во временную переменную, будет не только нагляднее но и быстрее.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Условие и переменные

Сообщение xakmenpro 15 фев 2016, 22:36

waruiyume писал(а):А-А-А-А-А-А-А-А-А РОБОТЫ АТАКУЮТ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11111111111111ОДИНОДИН
http://c2.com/cgi/wiki?RulesOfOptimization
Подобные, анальные оптимизации, обоснованы, только на коде, который вызывается десятки тысяч раз, во всех других случаях- это просто мазохизм ;)
Кстати, обращение к массиву и индексатору- ниразу не быстрые операции, и если один объект нужен несколько раз, то назначение его во временную переменную, будет не только нагляднее но и быстрее.

Временная переменная? Можно пример? Не слышал о таком
У меня много объектов в массиве. Много скриптов обращаются к этому массиву и для удобства создал
Синтаксис:
Используется csharp
public static List<GameObject> objList = new List<GameObject>(objects);
 

с других скриптов обращаюсь как main.listObj[], а в самом скрипте objects[]
чтобы легче было обращаться к объектам с других скриптов. Неправильный подход?
По поводу кода, получается нет разницы в каком виде написать код, ни как не влияет на скорость выполнения?
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: Условие и переменные

Сообщение waruiyume 15 фев 2016, 22:44

1) Объявленная внутри метода.
2) Смотри правило оптимизации №3
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Условие и переменные

Сообщение xakmenpro 15 фев 2016, 22:59

waruiyume писал(а):1) Объявленная внутри метода.
2) Смотри правило оптимизации №3

Все, понял. Спасибо за инфу
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56


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

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

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