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

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

Войти
Регистрация
Восстановить пароль
 
 
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
#1

скорость обработки - C++

31.05.2011, 17:36. Просмотров 745. Ответов 15
Метки нет (Все метки)

Господа програмисты делаю программу и встал такой вопрос-допустим у нас есть такой код
C++
1
2
3
4
5
int a;
a=0;
for ( ; ; ) {
a++ ;
}
Кто из железа отвечает за скорость подсчёта переменной а?
Процесор,оперативка или и то и другое или я вообще ошибаюсь,тогда исправте меня.
Заранее всем огромное спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 17:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос скорость обработки (C++):

Списки, определить скорость обработки - C++
Как сделать наглядно? Добавлено через 6 часов 58 минут вверх

Как задать скорость обработки операций в потоке std::thread? - C++
Процесс задается при помощи параметра «скорость обработки» - n операций в миллисекунду. Подскажите как это реализовать.

Создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка С, но не применять их в своей функции - C++
Доброго времени суток! Крайне необходима помощь экспертов в С++! Кто может - не оставьте меня в беде))) Вот задания: 3. Создать...

обработки массивов - C++
1)Составить программу для подсчета суммы четным элементов двумерной таблицы А размером m × n. Сформировать матрицу с помощью генератора...

Оптимизация обработки массивов - C++
Есть 12 числовых массивов (a,b,d,e,f,g,h,k,m,n,p,r) разной длины, их длина кратна 5 и заранее известна. Необходимо создать массив...

обработки массивов ляньте - C++
1)Составить программу, которая вычисляет произведение максимального и минимального значений элементов одномерного массива Х, состоящая из...

15
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
01.06.2011, 10:03 #2
Оба.

Возможно несколько вариантов реализации инкремента значения в зависимости от огромного количества факторов.
1. Переменная из памяти считывается в регистр процессора, производится её инкремент, значение регистра записывается обратно в память.
2. Увеличивается непосредственно значение в памяти.

В любом случае, операция займет несколько тактов процессора и произойдет запись/чтение ячейки памяти.
1
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
01.06.2011, 10:33 #3
И вообще, в данном конкретно коде оптимизатор скорее всего выкинет переменную a и ничего увеличиваться вообще не будет.
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 17:37  [ТС] #4
Цитата Сообщение от grizlik78 Посмотреть сообщение
И вообще, в данном конкретно коде оптимизатор скорее всего выкинет переменную a и ничего увеличиваться вообще не будет.
А вот тут позвольте с вами не согласиться,вопервых работа программы будет не бесконечна,а значит всё будет подсчитанно,во вторых вы себе хотя бы можете представить какое число должно присваиваться переменной,что бы компьютер не смог приплюсовать к нему единицу,и сколько должна по времени работать программа!!!
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:45 #5
Цитата Сообщение от Игорь с++ Посмотреть сообщение
А вот тут позвольте с вами не согласиться,вопервых работа программы будет не бесконечна,а значит всё будет подсчитанно,во вторых вы себе хотя бы можете представить какое число должно присваиваться переменной,что бы компьютер не смог приплюсовать к нему единицу,и сколько должна по времени работать программа!!!
Цикл бесконечный, разве что программа с ошибкой вылетит(в этом не уверен)
А число, большее чем значение int наберется очень быстро, намного меньше чем за секунду. Но при этом она просто станет равной минимальному значению int, если я не ошибаюсь.

Добавлено через 3 минуты
Таки нет, был неправ, от нуля секунды 2-3 считало=\
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
01.06.2011, 17:49 #6
Цитата Сообщение от Игорь с++ Посмотреть сообщение
А вот тут позвольте с вами не согласиться,вопервых
Да тут не со мной надо не соглашаться, а с компилятором. G++ генерирует вот такой код
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    .file   "spd.cpp"
    .text
    .p2align 4,,15
.globl main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    .p2align 4,,10
    .p2align 3
.L2:
    jmp .L2
    .cfi_endproc
.LFE0:
    .size   main, .-main
    .ident  "GCC: (GNU) 4.5.1 20101130 (ALT Linux 4.5.1-alt8)"
    .section    .note.GNU-stack,"",@progbits
Тут нет ничего, кроме бесконечного цикла.
Даже если сделать цикл конечным, то оптимизатор всё-равно всё выкинет. Даже цикл
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:53 #7
Странно... Я поставил условие, а оптимизация g++ это самое условие убила>_>
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
diagon@shadeware:~$ cat gean.cpp
#include <iostream>
int main(){
    int a=0;
    for (;a>=0;)
        a++;
    std::cout << a << std::endl;
    return 0;
}
diagon@shadeware:~$ g++ gean.cpp
diagon@shadeware:~$ time ./a.out
-2147483648
 
real    0m9.449s
user    0m9.385s
sys 0m0.000s
diagon@shadeware:~$ g++ gean.cpp -O3
diagon@shadeware:~$ time ./a.out
^C
 
real    1m1.980s
user    1m1.112s
sys 0m0.032s
diagon@shadeware:~$
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 17:56  [ТС] #8
господа о чём вы говорите,во первых только что проверил сам на dev c++ 4.9.9.2 задал переменной а чило 999999999,и сделал плюс 1,ждал минуту программа осталась работать!!!
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!

Добавлено через 1 минуту
вот текст пронраммы
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main()
{
    int a;
    a=999999999;
    for(;;){
            a++;
            }
            return 0;
            }
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:58 #9
ждал минуту программа осталась работать!!!
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!
Вы сами себе противоречите.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
01.06.2011, 17:59 #10
Цитата Сообщение от Игорь с++ Посмотреть сообщение
господа о чём вы говорите,во первых только что проверил сам на dev c++ 4.9.9.2 задал переменной а чило 999999999,и сделал плюс 1,ждал минуту программа осталась работать!!!
Мог бы и час прождать, если цикл такой, как в первом сообщении
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!
А в этом месте не понял. Программа же работала как-минимум минуту?
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 18:03  [ТС] #11
в чём?
ту прграмму которую я привёл последнею это была пробная программа,подтверждения моего высказывания или опровержение,а саму программу я кстати сделал и всё работает на ура!!!

Добавлено через 3 минуты
Цитата Сообщение от grizlik78 Посмотреть сообщение
Мог бы и час прождать, если цикл такой, как в первом сообщении
А в этом месте не понял. Программа же работала как-минимум минуту?
эта программа которую я привёл,а не та которую я сделал(короче говоря,последняя мною преведённая программа работала минуту,а реальную которую я делал время её работы ограниченна на 30 секунд).
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
01.06.2011, 18:09 #12
Что ж, попытаюсь донести свою мысль ещё раз: использование оптимизатора может привести к тому, что цикл вообще пропадёт. И в случае g++ это произойдёт практически наверняка.
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 18:23  [ТС] #13
а вы название темы читали?
Объясняю как работает реальная программа-создаётся бесконечный цикл переменной а присвоенно значение 0,затем внутри цикла создаётся пустой цикл который считает до 90000000,затем программа возвращается и плюсует к переменной а ещё еденицу,время работы программы 30 секунд,и в завмсммости от набранного числа переменной "а" иницилизируется скорость обработки процесором.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
01.06.2011, 18:26 #14
Читал, разумеется. И именно поэтому обращаю внимание на то, что такой способ оценки быстродействия очень ненадёжный. Он сильно зависит от того, используется ли оптимизатор и какой. Есть же системные таймеры для этого.
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 18:29  [ТС] #15
Цитата Сообщение от grizlik78 Посмотреть сообщение
Читал, разумеется. И именно поэтому обращаю внимание на то, что такой способ оценки быстродействия очень ненадёжный. Он сильно зависит от того, используется ли оптимизатор и какой. Есть же системные таймеры для этого.
прошу прощение,какой бы оптимизатор не использовался,когда запускае .ехе файл,набранное количество переменной "а" будет зависить от скорости процесора.
0
01.06.2011, 18:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2011, 18:29
Привет! Вот еще темы с ответами:

Функция обработки строк - C++
Нобходимро написать программку функция main() которой содержит вызов функции strlwr char *strlwr( char *s); и вызов пользовательской...

Функции обработки строки - C++
Народ, помогите расписать так чтобы через чтение по символам Я накидал свой вариант, но не подходит, а по символьное не могу сообразить...

Программа обработки массива - C++
с помощью указателей. Ввести с клавиатуры одномерный массив из 5 чисел , подсчитать сумму элементов массива.

Организация обработки прерываний - C++
Здравствуйте! Пытаюсь разобраться с механизмом обработки прерывания. Нужно написать такую программку, чтобы показать программное прерывание...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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