Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
#1

О размере циклов, break и производительности - C++

30.06.2012, 14:18. Просмотров 1133. Ответов 20
Метки нет (Все метки)

 Комментарий модератора 
Начало обсуждения здесь.


Цитата Сообщение от taras atavin Посмотреть сообщение
Представь себе цик на тройку-пятёрку экранов
Ага, зато это хороший стиль программирования. Функции? Не, не слышал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2012, 14:18     О размере циклов, break и производительности
Посмотрите здесь:

Как корректно прервать цикл? (нюансы использования циклов, операторов ветвления и оператора break) - C++
Здравствуйте! такая форма работает...цикл нормально прерывается for(double i=1; i<=10; i++){ if(i==8) break; ...

Вывод полной таблицы в нормальном размере - C++
добрый день, есть окно куда выводится таблица из БД, хотелось бы чтобы окно подстраивалось под размеры таблицы. Окно сделано в дизайнере,...

Ошибка при большом размере массива - C++
Есть код: #include <stdio.h> main() { int y=0; const int i=10000000; // если i=1000000 работает, если больше, например...

Разница в размере исходного и декодированного файла - C++
Тема моей работы кодирование и декодирование текста. Получается такая ситуация: бывает что размер исходного файла отличается от размера...

Программа завершается при большом размере матрицы смежности - C++
Добрый день! Прошу помощи по решению проблемы. В общем я пишу программу для работы с графами (точнее с матрицей смежности графов). Пишу...

Заполнение лидирующими нолями при неравном размере строк - C++
Решил попробовать длинную арифметику... Начал с суммы. Реализовал собственно сумму и застопорился на добавлении лидирующих нолей=\ ...

Цикл do.while и break - C++
Задача: написать программу, которая принимает от пользователя 10 int чисел, затем выводит их в строку, находит среднее значение. Так же...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.06.2012, 14:53     О размере циклов, break и производительности #2
Так это как раз в теле функции. Над ней ещё три-четыре уровня вызовов функций и под ней пять-шесть из самого цикла. И всё равно пять экранов в высоту - это малыш.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
30.06.2012, 15:07     О размере циклов, break и производительности #3
taras atavin, можешь привести пример такого цикла на 5 страниц?

Добавлено через 6 минут
Хотя бы ссылку на какую-нибудь библиотеку с указанием файла и строки.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.06.2012, 15:44     О размере циклов, break и производительности #4
А это не библиотека.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
30.06.2012, 23:15     О размере циклов, break и производительности #5
Да какая разница... Это смысла не меняет. Где ты видел такой неэффективный код на 5 страниц с оператором break ?

Добавлено через 13 минут
Да пусть даже без оператора break ...
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.07.2012, 16:28     О размере циклов, break и производительности #6
Брейка там и не было. А вот если бы был, я бы до сих пор тот цикл мучал.

Добавлено через 1 минуту
Цитата Сообщение от lazybiz Посмотреть сообщение
Где ты видел такой неэффективный код на 5 страниц
По-твоему все большие программы не эффективны по определению? А если сама задача большая и сложная?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 16:47     О размере циклов, break и производительности #7
taras atavin, при чем тут большие программы если речь о циклах?

Добавлено через 9 минут
По-моему чем больше цикл тем он менее эффективен, исключение составляют циклы, развернутые с целью оптимизации.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.07.2012, 17:49     О размере циклов, break и производительности #8
Цитата Сообщение от lazybiz Посмотреть сообщение
при чем тут большие программы если речь о циклах?
при размере.
Цитата Сообщение от lazybiz Посмотреть сообщение
По-моему чем больше цикл тем он менее эффективен, исключение составляют циклы, развернутые с целью оптимизации.
Ну как реши компактно систему 17-ти уравнений с участием векторных полей, частных производных двух первых порядков, интегралов, в том числе, по контру и по поверхности, роторов, дивергенций и роторов роторов. Кстати, компактная версия тоже была. И была как раз не эффективна, проигрывала в 78 894 000 раз. Причём, компактность эта относительная, разница в размере меньше процента и цикл был не развёрнут, а усложнено его тело. Усложнение сказалось на размерах. А если его разворачивать, то винчестера не хватит.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 17:58     О размере циклов, break и производительности #9
Я не умею решать такие системы, давай ты сам её решишь и выложишь код, а потом мы посмотрим можно ли его оптимизировать и сделать эффективней или нет.
Факты приводи!
Цитата Сообщение от taras atavin Посмотреть сообщение
Кстати, компактная версия тоже была.
Где была? Давай ссылку на компактную и не компактную.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.07.2012, 18:05     О размере циклов, break и производительности #10
Не умеешь, а критикуешь.
Цитата Сообщение от lazybiz Посмотреть сообщение
Где была? Давай ссылку на компактную и не компактную.
А кто тебе сказал, что её можно скачиать?

Добавлено через 49 секунд
Цитата Сообщение от lazybiz Посмотреть сообщение
а потом мы посмотрим можно ли его оптимизировать и сделать эффективней или нет.
Два года диссертационного исследования с бухты барахты пересмотришь? Много на себя берёшь, ты не гений по меркам сверхцивилизации.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 18:14     О размере циклов, break и производительности #11
Цитата Сообщение от taras atavin Посмотреть сообщение
Не умеешь, а критикуешь.
Я критикую по поводу больших циклов, а не по поводу решения систем уравнений.
Цитата Сообщение от taras atavin Посмотреть сообщение
Два года диссертационного исследования пересмотришь?
А зачем мне все два года, ты суть выдели, покажи цикл.
Ты постоянно приводишь какие-то доводы, пора бы к фактам переходить.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
01.07.2012, 18:55     О размере циклов, break и производительности #12
taras atavin, Тарас, цикл даже на пару-тройку экранов, адово плохой стиль программирования. Т.к. всегда можно разбить на маленькие функции, которые делают что-то одно, функция делающая много вещей одновременно - плохой стиль программирования.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 18:57     О размере циклов, break и производительности #13
Цитата Сообщение от taras atavin Посмотреть сообщение
Много на себя берёшь, ты не гений по меркам сверхцивилизации.
Я и не говорил что я гений "по меркам сверхцивилизации". Оскорбления - признак безвыходного состояния и осознания своей не правоты.
silent_1991
01.07.2012, 19:01  [ТС]
  #14

Не по теме:

ForEveR, так это ж в теле функции, ё-моё! (О размере циклов, break и производительности)

castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 19:14     О размере циклов, break и производительности #15
Я так понимаю вопрос исчерпан.
Мораль №1: огромные циклы не эффективны!
Мораль №2: не следует избегать break в циклах.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.07.2012, 08:56     О размере циклов, break и производительности #16
Цитата Сообщение от ForEveR Посмотреть сообщение
Тарас, цикл даже на пару-тройку экранов, адово плохой стиль программирования. Т.к. всегда можно разбить на маленькие функции, которые делают что-то одно, функция делающая много вещей одновременно - плохой стиль программирования.
На какое количество маленьких функций? На пару сотен тысячь? Хуже стиля нет. Цикл на строчку больше, чем нужен - плохой стиль, даже когда нужен на 4 строчки, считая со скобками и заголовком, но на пустом месте множить сущности - худший из всех возможных. Если же всё тело цикла снести в функцию, то получаем не только гигансткую функцию, которая не лучше самого цикла, так ещё на пустом месте накладные на вызов/возврат. Прощай эффективность. И ради чего? Ради того, чтоб просто из принципа сократить цикл? Не смешно. Разбил ты тело на пару-тройку функций. Помогло это тебе? И между ними связей почти столько же, как в них суммарно строк, чего делать просто нельзя, это даже не стиль, а надёжный способ угробить любой проект даже уровня "пустое окно, игрорящее юзвере". Функции же остались необозримы. Делить и их? Раздуешь исходную сотню строк цикла на пару миллионов, затянешь проект на века и всего делов. Функция заводится только тогда, когда с её помощью можно минимизировать связи между кодом, переносимым внутрь функции и остающимся снаружи и ни когда больше, а цикл выполняет многократно повторяемые операции. И шесть уровней вложения циклов подряд - не редкость, в отличие от циклов меньше двухсот-трёхсот строк, а меньше сотни со всеми вызовами функций из цикла бывают только циклы, решающие совсем уж примитивные подзадачи. Их много не бывает. Поиск подстроки больше шести строк раздувать нельзя. А нука смерь в строках внешний цикл прямого хода решения СЛАУ методом Гаусса. 15 строк - минимум и именно это наименее эффективный вариатант, на больших матрицах затягивающийся на тысячелетия, а с моим зрением экран=20 строк. А если хотя бы ленточную матрицу накрутить, то вот тебе ещё строки и их становится 18. А если блочно-блочная, то даже Гаусс перестаёт влезать в экран, всё ещё оставаясь примитивным до безобразия. Но такой цикл в серьёзной программе бывает ровно один, да ещё один для обратного хода, а циклы, генерящие саму матрицу даже на дипломах водятся десятками и при размеру каждый больше в разы.

Добавлено через 2 минуты
Цитата Сообщение от lazybiz Посмотреть сообщение
Мораль №2: не следует избегать break в циклах.
Следует избегать ненужного брейка в циклах. Когда действительно нужен, то лучше применять, но если программа не станет сложнее от условия в заголовке, выбрасывай брейк.

Добавлено через 5 минут
Цитата Сообщение от lazybiz Посмотреть сообщение
Оскорбления - признак безвыходного состояния и осознания своей не правоты.
Чем ты и занимаешься. Тебя почитать, так все учёные мира - недообезяны, а у тебя одного есть мозг и это супермозг. При этом сам задачи дипломного уровня не умеешь решать вообще. Диссертация то вытекла из диплома, в котором та же задача решалась грубее и в двух измерениях, а ты признался, что не умеешь решать весь этот класс. Но берёшься с бухты барахты за 5 минут оптимизировать код, как раз оптимизация которого уже заняла два из трёх лет диссертационного исследования. Даже прогрессоры из фантастических книг так себя не ведут, а годами вникают в местные достижения, уже по современным земным меркам относящиеся к давно пройденному этаму, а сами при этом - посланцы межзвёздных сверхцивилизаций. На изменение геометрии объекта и способа подвода тока и повышение разрешения модели и фиктивное повышение её размерности ушел час, ещё неделя - на фактическое повышение размерности, два года - на оптимизацию, две недели - на проверку адекватности модели и оставшееся время - на оптимизацию уже технологии. Это в диссертационном исследовании под руководством доктора наук и дважды членкора. И прежде, чем заявлять о неэффективности любой инопланетный прогрессор будет вынужден потратить ещё от нескольких недель на изучение того, что уже сделано и только потом сможет сказать, может ли он вообще оценивать эффективность именно здесь, или лучше заняться другими аспектами нашей отсталости. И не только из-за того, что сам быстрее не может, но и чтоб не оскорбить аборигенов. Да и на всякий случай. Вдруг там уже всё отлажено и оптимизировано так, что в рамках технической базы лучше уже не сделаешь? А ведь он если и изучал в школе методы лучше, то основывались то они на возможностях совсем другой и техники, и языков, и трансляторов. А адаптировать даже открытия инопланетных учёных к нашим возможностям - процесс тоже не быстрый. А ты припёрся, как тебе показалось, в палеолитическое племя, себя возомнил пришельцем со звзёд и говоришь: "Вы каменные ножи делать не умеете, так не эффективно, давайте я вас научу делать их из стали на станках и с феррованадивевым покрытием". Это каменные ножи, их дикари лучше, быстрее и эффективнее тебя делают и используют. Лучше стальные. Но эти каменные и стали их сделать нельзя. А стальные - это совсем другой этап и один прогрессор за всю жизнь племя на него не выведет. Нет технологической базы и начинать надо с технологии изготовления не самого ножа, а огнеупорных кирпичей и пока до ножа, идентичного пришельческому доберёшься, надо внедрить ещё много технологий, обучить местных химии, физике, математике... Жизни прогрессора-одиночки просто не хватит. На самом же деле ты принял за камень металлический сплав ТН-20, которым можно резать стекло, тем самым продемонстрировав, что сам родом из средних веков, а "дикари" - из двадцать первого века. А если бы действительно тебя забросило в палеолит, то, прежде чем учить аборигенов делать ножи, ты должен лет 20 потратить на то, чтоб у них самих научиться делать каменные ножи. И только потом по науке следующих веков подсказать дикарям, какой камень действительно лучше, а какой таким только кажется и как другой камень эргономичней держать. И провести эти исследования самостоятельно на базе и научных достижений своей цивилизации, и того, чему тебя научили дикари. Да на них потратить года 3.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
02.07.2012, 10:20     О размере циклов, break и производительности #17
taras atavin, Программируй на фортране. А в С++ такие циклы - зло и разбитие по функциям прекрасно помогает.
О, для меня экран это далеко не 20 строк, а порядка 50-100, циклы на 20 строчек делить естественно смысла нет.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
02.07.2012, 11:04     О размере циклов, break и производительности #18
Цитата Сообщение от taras atavin Посмотреть сообщение
Следует избегать ненужного брейка в циклах.
С тобой хрен поспоришь. Добавлю что следует избегать всего ненужного.

Я рад что ты умеешь решать задачи дипломного уровня, только вот это здесь не при чем...
LK
06.07.2012, 05:20
  #19
 Комментарий модератора 
taras atavin, прекратите "растекаться мыслию по древу" и выссказывайтесь по теме.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 09:32     О размере циклов, break и производительности
Еще ссылки по теме:

Оператор break - C++
Подскажите, пожалуйста почему оператор break в строке 44 выдаёт ошибку, и как её исправить? #include<iostream.h> #include<conio.h> ...

Break и return - C++
Дано два кода на Си. #include<stdio.h> int func(char ,char); void main() { char sym,str; int z; printf("Vvedite stroky:\n"); ...

Использование break - C++
using namespace std; void print_out(int n); int main(){ int n; cout<<"введите число n:\n"; cin>>n; if(n==0){...

оператор break - C++
Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо. И что его можно использовать только если...

Break в циклах - C++
Такая проблема: занимаюсь по книге Эллайна, и в ней заговорилось о break и его использовании в циклах. Я, дабы проверить эту зверюгу на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
06.07.2012, 09:32     О размере циклов, break и производительности #20
Шедеврвр. Ребят, вам надо книжки по программированию писать. Очень похож. Читателю сразу станет понятно, что если он хочет использовать в цикле for несколько стартовых переменных, то ему придется решить сначала пачку уравнений для диссертации и разбить на миллиарды функций огнеупорные кирпичи без использования ножа.
Что вы пристали к break-у? Да вы еще GoTo вспомните. Хороший стиль программирования. Плохой стиль программирования. Какая разница? Главное ведь что оно работает! Топикстартер не хотел улетать в космос на своей программе.
Yandex
Объявления
06.07.2012, 09:32     О размере циклов, break и производительности
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru