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

Почему при инициализации данных программа работает быстрей? - C++

Восстановить пароль Регистрация
 
Silence_
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
22.10.2010, 23:46     Почему при инициализации данных программа работает быстрей? #1
Почему при инициализации данных программа работает быстрей?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.10.2010, 23:51     Почему при инициализации данных программа работает быстрей? #2
Silence_, А это уже смотря каких данных.
Допустим, если с вектором сделать resize или reserve сразу - скорость немного поднимется. Ну со всеми контейнерами по сути.
Silence_
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
22.10.2010, 23:53  [ТС]     Почему при инициализации данных программа работает быстрей? #3
исходных данных. когда известны начальные значения

Добавлено через 1 минуту
например я проинициализирую массив. или переменную

C
1
2
.....
 int a = 1
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.10.2010, 23:56     Почему при инициализации данных программа работает быстрей? #4
Silence_, А это с чего взяли? Тесты проводили? Или на глазок?
Silence_
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
23.10.2010, 00:00  [ТС]     Почему при инициализации данных программа работает быстрей? #5
так вся загвоздка то и в этом....что я сам в сомнениях))
может я неккоректно сформулировал...
в общем, инициализация проходит на этапе трансляции....
(это вопрос из теории) так вот...я не могу никак ответить...почему быстрей...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.10.2010, 00:29     Почему при инициализации данных программа работает быстрей? #6
Silence_, Ну опять же смотря какие данные... Держите пару тестов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <ctime>
 
int main()
{
    clock_t start=clock();
    int a;
    a=5; 
    std::cout<<a<<'\n';
    std::cout<<"Difference: "<< static_cast<double>(clock()-start)/CLOCKS_PER_SEC<<'\n';
    clock_t start2=clock();
    int b=5;
    std::cout<<b<<'\n';
    std::cout<<"Difference: "<< static_cast<double>(clock()-start2)/CLOCKS_PER_SEC<<'\n';
    return 0;
}
Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <ctime>
#include <cstring>
#include <algorithm>
 
int main()
{
    const int n=10000;
    clock_t start=clock();
    int Arr[n];
    memset(Arr, 0, sizeof(int)*n);
    std::cout<<"Diff with memset: "<< static_cast<double>(clock()-start)/CLOCKS_PER_SEC<<'\n';
    clock_t start2=clock();
    int SecArr[n];
    std::fill_n(SecArr, n, 0);
    std::cout<<"Diff with fill_n: "<< static_cast<double>(clock()-start2)/CLOCKS_PER_SEC<<'\n';
    clock_t start3=clock();
    int ThirdArr[n];
    for(int i=0; i<n; ++i)
        ThirdArr[i]=0;
    std::cout<<"Diff with simple initialisation: "<< static_cast<double>(clock()-start3)/CLOCKS_PER_SEC<<'\n';
    return 0;
}
Silence_
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
23.10.2010, 00:37  [ТС]     Почему при инициализации данных программа работает быстрей? #7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
    int main ()
{
int i;
float eps,x,a,s;
 scanf("%f",&x);
 scanf("%f",&eps);
i = 1;
a=s=1;
while(a>eps)
{a*=x/;
 s+=a;
i++;
}
printf("s=%f", s);
return 0;
}
Добавлено через 1 минуту
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
    int main ()
{
int i = 1;
float eps,x,a = 1., s=1. ;
 scanf("%f",&x);
 scanf("%f",&eps);
 
while(a>eps)
{a*=x/;
 s+=a;
i++;
}
printf("s=%f", s);
return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.10.2010, 00:39     Почему при инициализации данных программа работает быстрей? #8
Silence_, Код некорректен. Инкрементируется переменная в которой записан "мусор". Что получаем в результате? Правильно, мусор+1.
В мусоре может быть все что угодно. И 0, и -8785787 и любое значение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main()
{
int i;
float eps,x,a,s;
 scanf("%f",&x);
 scanf("%f",&eps);
a = 1;
a=s=1;
while(a>eps)
{a*=x/;
 s+=a;
i++;
}
printf("s=%f", s);
return 0;
}
Silence_
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
23.10.2010, 00:43  [ТС]     Почему при инициализации данных программа работает быстрей? #9
я там опечатался не a=1, а i =1 исправил

Добавлено через 37 секунд
код Си
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.10.2010, 00:50     Почему при инициализации данных программа работает быстрей? #10
Сверяйте. Раз 5 проверьте одни и те же варианты. Будет выдавать по-разному.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <time.h>
 
int main ()
{
size_t start=clock();
int i;
float eps,x,a,s;
 scanf("%f",&x);
 scanf("%f",&eps);
i = 1;
a=s=1;
while(a>eps)
{a*=x;
 s+=a;
i++;
}
printf("s=%f\n", s);
printf("Diff: %f\n", (double)(clock()-start)/CLOCKS_PER_SEC);
return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <time.h>
 
int main ()
{
size_t start=clock();
 
int i = 1;
float eps,x,a = 1., s=1. ;
 scanf("%f",&x);
 scanf("%f",&eps);
 
while(a>eps)
{a*=x;
 s+=a;
i++;
}
printf("s=%f\n", s);
printf("Diff: %f\n", (double)(clock()-start)/CLOCKS_PER_SEC);
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2010, 19:01     Почему при инициализации данных программа работает быстрей?
Еще ссылки по теме:

Почему код на С++ работает быстрей C++
Почему прога может зависать при инициализации массива C++
Почему не работает программа? C++

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

Или воспользуйтесь поиском по форуму:
Silence_
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
25.10.2010, 19:01  [ТС]     Почему при инициализации данных программа работает быстрей? #11
таймером только скорость выполнения програмного кода засечется)) тут на физическом уровне.
Yandex
Объявления
25.10.2010, 19:01     Почему при инициализации данных программа работает быстрей?
Ответ Создать тему
Опции темы

Текущее время: 06:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru