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

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

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

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

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

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

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

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

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

Программа обработки структур - C++
Найдите пожалуйста ошибку. На 33 строке выдаёт error: too few arguments to function 'complex mul (complex, complex)' #include...

обработки структур данных - C++
Всем добрый вечер! народ это для меня сложновато заранее всем спасибо.emal.t.bekzat_ismail@mail.ru Тема:Программирование задач...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
01.06.2011, 10:03     скорость обработки #2
Оба.

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

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

Добавлено через 3 минуты
Таки нет, был неправ, от нуля секунды 2-3 считало=\
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
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
Тут нет ничего, кроме бесконечного цикла.
Даже если сделать цикл конечным, то оптимизатор всё-равно всё выкинет. Даже цикл
diagon
Higher
1928 / 1194 / 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:~$
Игорь с++
434 / 457 / 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;
            }
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:58     скорость обработки #9
ждал минуту программа осталась работать!!!
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!
Вы сами себе противоречите.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
01.06.2011, 17:59     скорость обработки #10
Цитата Сообщение от Игорь с++ Посмотреть сообщение
господа о чём вы говорите,во первых только что проверил сам на dev c++ 4.9.9.2 задал переменной а чило 999999999,и сделал плюс 1,ждал минуту программа осталась работать!!!
Мог бы и час прождать, если цикл такой, как в первом сообщении
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!
А в этом месте не понял. Программа же работала как-минимум минуту?
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 18:03  [ТС]     скорость обработки #11
в чём?
ту прграмму которую я привёл последнею это была пробная программа,подтверждения моего высказывания или опровержение,а саму программу я кстати сделал и всё работает на ура!!!

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

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

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

Программа обработки матриц - C++
Всем здравствуйте. Было задание: Разработать программу для обработки матриц. Программа должна выполнять следующие действия: суммы,...

Алгоритм обработки строки - C++
Здраствуйте, делаю скриптовой интерпритатор. Есть строка вида: dа Loadka. Нужно получить Слово Lodka - причем dа - всегда есть в строке. А...

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


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

Или воспользуйтесь поиском по форуму:
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
01.06.2011, 18:29  [ТС]     скорость обработки #15
Цитата Сообщение от grizlik78 Посмотреть сообщение
Читал, разумеется. И именно поэтому обращаю внимание на то, что такой способ оценки быстродействия очень ненадёжный. Он сильно зависит от того, используется ли оптимизатор и какой. Есть же системные таймеры для этого.
прошу прощение,какой бы оптимизатор не использовался,когда запускае .ехе файл,набранное количество переменной "а" будет зависить от скорости процесора.
Yandex
Объявления
01.06.2011, 18:29     скорость обработки
Ответ Создать тему
Опции темы

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