Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

скорость обработки

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

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

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

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

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

15
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
01.06.2011, 10:03
Оба.

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

В любом случае, операция займет несколько тактов процессора и произойдет запись/чтение ячейки памяти.
1
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.06.2011, 10:33
И вообще, в данном конкретно коде оптимизатор скорее всего выкинет переменную a и ничего увеличиваться вообще не будет.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
01.06.2011, 17:37  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
И вообще, в данном конкретно коде оптимизатор скорее всего выкинет переменную a и ничего увеличиваться вообще не будет.
А вот тут позвольте с вами не согласиться,вопервых работа программы будет не бесконечна,а значит всё будет подсчитанно,во вторых вы себе хотя бы можете представить какое число должно присваиваться переменной,что бы компьютер не смог приплюсовать к нему единицу,и сколько должна по времени работать программа!!!
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:45
Цитата Сообщение от Игорь с++ Посмотреть сообщение
А вот тут позвольте с вами не согласиться,вопервых работа программы будет не бесконечна,а значит всё будет подсчитанно,во вторых вы себе хотя бы можете представить какое число должно присваиваться переменной,что бы компьютер не смог приплюсовать к нему единицу,и сколько должна по времени работать программа!!!
Цикл бесконечный, разве что программа с ошибкой вылетит(в этом не уверен)
А число, большее чем значение int наберется очень быстро, намного меньше чем за секунду. Но при этом она просто станет равной минимальному значению int, если я не ошибаюсь.

Добавлено через 3 минуты
Таки нет, был неправ, от нуля секунды 2-3 считало=\
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.06.2011, 17:49
Цитата Сообщение от Игорь с++ Посмотреть сообщение
А вот тут позвольте с вами не согласиться,вопервых
Да тут не со мной надо не соглашаться, а с компилятором. 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
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:53
Странно... Я поставил условие, а оптимизация 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
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
01.06.2011, 17:56  [ТС]
господа о чём вы говорите,во первых только что проверил сам на 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
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.06.2011, 17:58
ждал минуту программа осталась работать!!!
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!
Вы сами себе противоречите.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.06.2011, 17:59
Цитата Сообщение от Игорь с++ Посмотреть сообщение
господа о чём вы говорите,во первых только что проверил сам на dev c++ 4.9.9.2 задал переменной а чило 999999999,и сделал плюс 1,ждал минуту программа осталась работать!!!
Мог бы и час прождать, если цикл такой, как в первом сообщении
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Во вторы я же сказал программа не вечная,время работы 30 секунд!!!
А в этом месте не понял. Программа же работала как-минимум минуту?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
01.06.2011, 18:03  [ТС]
в чём?
ту прграмму которую я привёл последнею это была пробная программа,подтверждения моего высказывания или опровержение,а саму программу я кстати сделал и всё работает на ура!!!

Добавлено через 3 минуты
Цитата Сообщение от grizlik78 Посмотреть сообщение
Мог бы и час прождать, если цикл такой, как в первом сообщении
А в этом месте не понял. Программа же работала как-минимум минуту?
эта программа которую я привёл,а не та которую я сделал(короче говоря,последняя мною преведённая программа работала минуту,а реальную которую я делал время её работы ограниченна на 30 секунд).
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.06.2011, 18:09
Что ж, попытаюсь донести свою мысль ещё раз: использование оптимизатора может привести к тому, что цикл вообще пропадёт. И в случае g++ это произойдёт практически наверняка.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
01.06.2011, 18:23  [ТС]
а вы название темы читали?
Объясняю как работает реальная программа-создаётся бесконечный цикл переменной а присвоенно значение 0,затем внутри цикла создаётся пустой цикл который считает до 90000000,затем программа возвращается и плюсует к переменной а ещё еденицу,время работы программы 30 секунд,и в завмсммости от набранного числа переменной "а" иницилизируется скорость обработки процесором.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.06.2011, 18:26
Читал, разумеется. И именно поэтому обращаю внимание на то, что такой способ оценки быстродействия очень ненадёжный. Он сильно зависит от того, используется ли оптимизатор и какой. Есть же системные таймеры для этого.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
01.06.2011, 18:29  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
Читал, разумеется. И именно поэтому обращаю внимание на то, что такой способ оценки быстродействия очень ненадёжный. Он сильно зависит от того, используется ли оптимизатор и какой. Есть же системные таймеры для этого.
прошу прощение,какой бы оптимизатор не использовался,когда запускае .ехе файл,набранное количество переменной "а" будет зависить от скорости процесора.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
02.06.2011, 11:24
Цитата Сообщение от Игорь с++ Посмотреть сообщение
прошу прощение,какой бы оптимизатор не использовался,когда запускае .ехе файл,набранное количество переменной "а" будет зависить от скорости процесора.
Вообще-то маловероятно, если оптимизатор уберет саму переменную "а".
Или, например, превратит код
C++
1
for(a = 1; a < 1000; ++a);
в
C++
1
a = 1000;
Минус туева хуча тактов же?

grizlik78 прав. Не надо таким образом пытаться оценить производительность. Ну если только в попугаях для совершенно конкретного процесса системы. Оптимизаторы сейчас очень вумные пошли.

Есть куча стандартных способов замера производительности системы да и процесса. Если все-таки решите идти другим путем, почитайте про volatile.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2011, 11:24
Помогаю со студенческими работами здесь

Скорость обработки
Добрый вечер. Столкнулся с такой проблемой, работаю с большим двумерным массивом байтового типа, то есть загружаю его в программу и...

Скорость обработки данных
Привет всем у меня вопрос по скорости загрузки из бд. Я заношу данные о адресе из yandex карт. В любом случае есть область, но я ее заменил...

Скорость обработки строк
Дано: .Net Framework a, b - переменные типа String a.Length=50 b = большой лог-файл Вопросы: 1. Какая функция выполнится...

Увеличить скорость обработки
Здравствуйте, по работе возникла необходимость создания и ведения базы данных довольно большого объёма. Есть небольшие познания в теории,...

Скорость обработки данных
Подскажите пожалуйста что можно использовать для высокой скорости обработки данных, акцесс меня честно говоря не очень устроил, он начал...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru