1. Java / Говнокод #3825

    +74

    1. 1
    for (Integer i = 0; i<_pwiList.size(); i++)

    Вот к чему приводит бездумное использование классов-обёрток "для унификации". Конечно, оптимизатор может здесь сообразить, но не факт. А если данный фрагмент трактовать буквально, то i++ приведёт к unboxing, увеличению и последующему boxing.

    Запостил: konsoletyper, 30 Июля 2010

    Комментарии (6) RSS

    • возможно вы правы, но я бы просто обломался писать Integer, когда можно написать int ))
      да и вполне возможно что тут можно обойтись for-each
      Ответить
    • инт все равно лучше, т.к. один боксинг - это не два унбоксинг-боксинг
      Ответить
      • боксинг/унбоксинг это типа извлечение/запаковка простого типа? Это в яве такая "тяжелая" операция?
        Ответить
        • Ну это и дотнете не быстро. А операция не то, чтобы очень тяжёлая. Просто во-первых, отжирает кучу на каждый боксинг, а во-вторых, это же происходит в цикле. Да и вообще, как бы класс Integer не для того предназначен, чтобы его в таких местах юзать. И, надо сказать, я по этому коду не просто так лазил. Ведь реально подтормаживает. То тебе циклы с боксингом/анбоксингом, то преобразование дат в строки и обратно. В общем, косяк на косяке косяком погоняет.
          Ответить
          • Что поделать -- уровень выше. Так что на питоне/шарпе чаще медленнее будет, чем на цэ. Плата за готовые свистелки. Уверен, если на таких языках писать по принятому принципу "не оптимизировать во время написания", то этот шлак потом хрен выгребешь.
            Ответить
        • извлечение быстрее, а вот создание нового обьекта
          Ответить

    Добавить комментарий