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

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

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

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

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

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


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

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

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

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

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

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

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

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

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

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

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

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

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

Не по теме:

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

0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 19:14 #15
Я так понимаю вопрос исчерпан.
Мораль №1: огромные циклы не эффективны!
Мораль №2: не следует избегать break в циклах.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2012, 19:14
Привет! Вот еще темы с ответами:

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

Инструкция break - C++
Эм, балуюсь с C++. Значит, отбираю простые числа, первый вариант программы: #include <iostream> #include <cstdlib> #include...

Оператор 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"); ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
01.07.2012, 19:14
Ответ Создать тему
Опции темы

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