На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Оператор |= и оптимизация
    Допустим есть такой код
    ExpandedWrap disabled
      bool f = true;
      for(int i = 0; i < 10; i++)
          i |= f();

    где f - какая-то функция, которая возвращает bool.
    Я правильно понимаю, что оптимизатор не имеет право в данном случае убрать вызовы f?
    Сообщение отредактировано: shm -
      По умолчанию он должен считать, что любой вызов функции обладает побочными эффектами. Но если он сможет раскрутить этот вызов и увидит, что побочных эффектов нет - то может смело соптимизировать.

      Добавлено: вот если бы там был оператор ||=, то имел бы право оптимизировать и не раскручивая (по аналогии с ||). К счастью, ни в обычных Сях, ни в плюсах такого оператора нет.
      Сообщение отредактировано: Dushevny -
        Я бы не стал убирать, не вижу причин для убирания.
          Цитата Dushevny @
          о умолчанию он должен считать, что любой вызов функции обладает побочными эффектами. Но если он сможет раскрутить этот вызов и увидит, что побочных эффектов нет - то может смело соптимизировать.

          Я так и думал. Спасибо.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0178 ]   [ 16 queries used ]   [ Generated: 18.04.24, 04:44 GMT ]