Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35

Циклы и их оптимизация

11.06.2013, 21:41. Показов 5210. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Имеется код программы, необходимо оптимизировать вложенный цикл чтобы время потраченное на выполнение программы уменьшилось после оптимизации на заметное число >1 секунды. Можете по своему усмотрению усложнить код (вложив еще цикл) для заметности автоматизации.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <math.h>
#include <process.h>
 int main()
{
    int n, i=2, j;
    double sum;
    cout<<"n= ";
    cin>>n;
    for(i=0; i<n+1; i++)
    {
    sum=0;
    for(j=1; j<i+2; j++)
        sum+=(double)1/(i*i+j);
    cout<<"F"<<i<<"="<<sum<<endl;
    }
    system("pause");
   return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2013, 21:41
Ответы с готовыми решениями:

Оптимизация кода, массивы и циклы
Занимаюсь программированием совсем немного, решил потренироватся. Написал консольное приложение в духе &quot;Matrix&quot;. Там объявленно...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии &quot;оптимизатора&quot; в какой то умной книжке был создан миф. Это миф о цветовой индефикации...

Циклы с условием, циклы с переменной, вложенные циклы
С условием 1. Ввести натуральное число N и вычислить сумму всех чисел фибоначчи меньших N. Предусмотреть защиту от ввода...

54
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
12.06.2013, 00:35
Студворк — интернет-сервис помощи студентам
Через OpenMP.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <omp.h>
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
 
    cout << "n = ";
    cin >> n;
 
    double *sum = new double [n + 1];
 
    #pragma omp parallel for
    for ( int i = 0; i < n + 1; i++ ) {
        sum[i] = 0;
        for ( int j = 1; j < i + 2; j++ ) {
            sum[i] += 1. / (i * i + j);
        }
    }
 
    for ( int i = 0; i < n + 1; i++ ) {
        cout << "F" << i << " = " << sum[i] << endl;
    }
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
12.06.2013, 00:35  [ТС]
Ребят, а может быть на каком простом примере можно сделать оптимизацию циклов, пусть она будет 5% но это уже оптимизация как не как, на каких - либо математических действиях
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
12.06.2013, 00:36
Цитата Сообщение от Wolkodav Посмотреть сообщение
Matan!, на C# смог бы, а на плюсах таким не занимался.
Ну,если не сложно,какой-то примерчик покажи.Не здесь,так в личку
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
12.06.2013, 00:36
Цитата Сообщение от 2e1773ce Посмотреть сообщение
Для встроенных типов разницы нет, а на итераторах, например, префиксный гораздо быстрее.
Где ты тут итераторы увидел?
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
12.06.2013, 00:37
Цитата Сообщение от lazybiz Посмотреть сообщение
sum[i] += 1. / (i * i + j);
что за точка??
0
7 / 7 / 2
Регистрация: 10.03.2013
Сообщений: 96
12.06.2013, 00:37
Цитата Сообщение от Matan! Посмотреть сообщение
Учи правила.Другой же результат будет совсем!
ты вообще о чем?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
12.06.2013, 00:38
Цитата Сообщение от Matan! Посмотреть сообщение
что за точка??
Точка означает тип double.
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
12.06.2013, 00:38
Цитата Сообщение от lazybiz Посмотреть сообщение
Для встроенных типов разницы нет, а на итераторах, например, префиксный гораздо быстрее.
Это инкременты))
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
12.06.2013, 00:39
Matan!, это не я писал.
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
12.06.2013, 00:41
Цитата Сообщение от 2e1773ce Посмотреть сообщение
ты вообще о чем?
Это начальные главы учебников "Префиксный и постфиксный инкременты".
0
7 / 7 / 2
Регистрация: 10.03.2013
Сообщений: 96
12.06.2013, 00:45
Цитата Сообщение от lazybiz Посмотреть сообщение
Где ты тут итераторы увидел?
ТСу экзамен сдавать , я раписал некоторые простые моменты про оптимизацию , если их тут нету(итераторов) это не значит что они ему в будущем не встретятся , преинкремент должен входить в привычку.

Добавлено через 1 минуту
Цитата Сообщение от Matan! Посмотреть сообщение
Это начальные главы учебников "Префиксный и постфиксный инкременты".
Ты к чему это пишешь?
0
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
12.06.2013, 00:46  [ТС]
не меня вот такие задания вообще в ступор ставят, не часто дают, но если дадут то это ужс... надо короче забить на танки и начать изучать с++
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
12.06.2013, 00:47
Цитата Сообщение от 2e1773ce Посмотреть сообщение
преинкремент должен входить в привычку.
Не должен. Если ты знаешь чем они отличаются то должен это понимать.

В итераторах инкремент перегружен. Это отдельная тема. Можно создать контейнер с перегруженным пост-инкрементом, который будет работать быстрее пре-инкремента.
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 790
12.06.2013, 01:54
DVGU.MAKC, если вам все равно что нужно я вам скину 2 программки выполняют одно и тоже,но скорость различна.Если это то что нужно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <iomanip>
#include <math.h>
 
using namespace std;
 
 
inline bool simple(int);
 
int main()
{
for(int i = 1; i <= 100000; i++)
if(simple(i))
cout << setw(5) << setiosflags(ios::left) << i;
 
return 0;
}
 
inline bool simple(int num)
{
if(num < 2)
return false;
else
for(int i = 2; i <= sqrt(num); i++)
if(num % i == 0)
return false;
 
return true;
}
это оптимизирована
эта нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <iomanip>
#include <math.h>
 
using namespace std;
 
 
 bool simple(int);
 
int main()
{
for(int i = 1; i <= 100000; i++)
if(simple(i))
cout << setw(5) << setiosflags(ios::left) << i;
 
return 0;
}
 
 bool simple(int num)
{
if(num < 2)
return false;
else
for(int i = 2; i <= num/2; i++)
if(num % i == 0)
return false;
 
return true;
}
вычисляют простое число.Сравните скорость выполнения.
0
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
12.06.2013, 01:56  [ТС]
Хорошо, сейчас посмотрю, опробую, большое спасибо Вам и всем кто старался, пытался помочь. А при помощи какого способа осуществлялась оптимизация?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2013, 01:56

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона для функции 2*X12 - X1*X2 + 3*X22 -...

Циклы. Напечатать числа в виде таблицы, используя только циклы
4. Напечатать числа в виде таблицы, используя только циклы (массивы и строки не применять): 1 2 2 ...

Циклы. Напечатать числа в виде таблицы, используя только циклы
Напечатать числа в виде таблицы, используя только циклы (массивы и строки не применять): 1 2 2 ...

Переведите исходные циклы в циклы других форматотв:
Переведите исходные циклы в циклы других форматотв: For i:73 to 122 do в Цикл while: в Цикл repeat: For i:256 downto 100 do в...

Циклы в Паскале (циклы с пост- и предусловием)
Требуется напиcать программу, которая запрашивает числа с клавиатуры до тех пор, пока сумма чисел не превысит 25 или введенное число не...


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

Или воспользуйтесь поиском по форуму:
55
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru