i++ против ++i, спор однако |
Здравствуйте, гость ( Вход | Регистрация )
i++ против ++i, спор однако |
Red Devil |
20.7.2008, 11:27
Сообщение
#1
|
Студент Группа: Участник Сообщений: 68 Регистрация: 6.6.2008 Из: Saint-Petersburg Пользователь №: 194 Спасибо сказали: 1 раз(а) Репутация: 3 |
Я согласен с автором в том, что опен соурс программисты слишком непрофиссионально относятся к работе. В большенстве своем пишут на Си, те кто пишут на С++ используют его неправильно.
Стоит хотя бы исходные коды посмотреть, ужас, ужас. Естественно все будет тормозить, когда циклы не оптимизируется, пишется i++, вместо ++i, функция вызыова размерности вызывается каждый при проходе цикла, вместо того чтобы ее сохранить при начале проходе и сравнивать значение. Лишние переменные с неопределенными сроком жизни, отсуствие применения паттернов проектирования - это я его могу продолжать еще долго. Привычка пихать все в классы, ничего не разделяя. На первый взгляд кажется что типа это дело автора опен соурс, но это напрямую влияет на архитуктуру проекта и того кто будет в дальшнейшем его развивать. Большенство проектов умирают, потому что никто не хочет поддерживать тот убогий код, который был заложен автором при разработке, в том числе и сам автор. Статью читал где-то месяц назад, про программистов во всем согласен, что там написано. Сообщение отредактировал Red Devil - 20.7.2008, 11:29 |
|
|
Tonal |
22.7.2008, 21:25
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Не совсем так. Для твоего примера, нормальный современный компилятор, сообразит, что возвращаемое значение не используется - значит его можно выкинуть. Естественно, это в случае, когда включена хоть какая-то оптимизация.
g++ (GCC) 3.4.5 (mingw-vista special r3) >g++ -S -O1 iter.cpp
Как можно убедиться, код обоих функций одинаков. Для других уровней оптимизации и последующих версий gcc это тоже верно. Твоё рассуждение верно или когда оптимизация отрублена напрочь, или когда конструктор, деструктор или сами операторы имеют побочные эффекты (например отладочную печать, или подсчёт ресурсов) - тогда компилятору деваться некуда, и придётся оставлять всё как написано. Сообщение отредактировал Tonal - 22.7.2008, 21:29 |
|
|
Текстовая версия | Сейчас: 28.12.2024, 10:29 |