none
Повторное вычисление такого же условия условия RRS feed

  • Вопрос

  • Допустим имеется следующий код:

    string _capText = this.captionText;
    if (!string.IsNullOrEmpty(_capText)) _capText = _capText.Trim();
    if (!string.IsNullOrEmpty(_capText)) _capText = string.Format(" {0} ", _capText);

    Если так окажется, что this.captionText есть null, то условия сравнения выполняться два раза или компилятор сообразить, что нужно вычислять только один раз?

    То есть, следует ли заменить вышеуказанный код на следующий:

    string _capText = this.captionText;
    if (!string.IsNullOrEmpty(_capText))
    {
      _capText = _capText.Trim();
      if (!string.IsNullOrEmpty(_capText)) _capText = string.Format(" {0} ", _capText);
    }


    25 марта 2017 г. 14:43

Ответы

  • Обычно сообразит. Если вам интересно то компилите релиз, запускайте без отладки, потом подключайте отладчик, переходите в режим диссамблирования и смотрите.

    Совет: не надо заниматься микро-оптимизациями, никаких преимуществ это не даст. Тем более в обрасти UI где человек всегда будет самой медленной частью. Вместо этого определите горячие зоны (например долгие циклы) и выберете оптимальный алгоритм. Это часто позволяет ускорить код на порядки вместо нескольких процентов.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    25 марта 2017 г. 16:27
    Модератор