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

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

Войти
Регистрация
Восстановить пароль
 
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
#1

Про спецификатор Register - C++

02.07.2013, 17:02. Просмотров 448. Ответов 2
Метки нет (Все метки)

Решил испытать register. Есть 2 кода:
Первый код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <ctime>
 
 
int main()
{
    time_t timer;
    time(&timer);
 
    unsigned long long int x = 0;
    for (unsigned long long int i=0; i<18000000000; ++i)
        ++x;
    std::cout << x << std::endl;
 
    time_t end;
    time(&end);
    std::cout << "Time: " << difftime(end, timer) << std::endl;
    return 0;
}


Второй код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <ctime>
 
 
int main()
{
    time_t timer;
    time(&timer);
 
    register unsigned long long int x = 0;
    for (register unsigned long long int i=0; i<18000000000; ++i)
        ++x;
    std::cout << x << std::endl;
 
    time_t end;
    time(&end);
    std::cout << "Time: " << difftime(end, timer) << std::endl;
    return 0;
}


У меня всегда выводится одинаковое время. Получается, что register вообще юзать не надо, т.к. разницы не будет? И первый код компилятор оптимизировал как-бы до второго, положив счетчик цикла и переменную х в регистры?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 17:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Про спецификатор Register (C++):

Спецификатор автоматического класса памяти, register - C++
Прочитал: Register. Ещё один спецификатор автоматического класса памяти. Применяется к объектам, по умолчанию располагаемым в локальной...

Ключевое слово register - C++
локальная переменная которая задается : register int a; так же будет локальной и сохраняется в регистр если есть свободное место. но...

Переменная в register, операция >>, во что компилится? - C++
Если объявлена переменная register unsigned int i=100; и затем мне надо выполнять операцию &gt;&gt;1 (деление на 2), в цикле, дак вот,...

Отладка: _free_base “Error reading register value” - C++
Доброго времени суток, имеется сей код: ... std::fstream f_hStream; f_hStream.open(&quot;&lt;file&gt;&quot;, ios_base::binary | ios_base::in); ...

Спецификатор %n - C++
Добрый вечер! Столкнулся с проблемой использования спецификатора %n, когда пытался вывести кол-во распечатанных символов функцией...

Спецификатор typedef - C++
Не могу понять как работает спецификатор typedef... Прочитал про него достаточно инфы и он везде сравнивается с директивой #define с той...

2
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
02.07.2013, 17:11 #2
В С++11
A register specifier is a hint to the implementation that the variable so declared will be heavily used.
[ Note: The hint can be ignored and in most implementations it will be ignored if the address of the variable
is taken. This use is deprecated (see D.2). — end note ]

The use of the register keyword as a storage-class-specifier (7.1.1) is deprecated.
В С++03 еще не deprecated, но

A register specifier has the same semantics as an auto specifier together with a hint to the implemen-
tation that the object so declared will be heavily used. [Note: the hint can be ignored and in most imple-
mentations it will be ignored if the address of the object is taken. —end note]
1
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
02.07.2013, 17:12 #3
Dani, все верно, register - это очень устаревший спецификатор, который давным давно не используется. Современные оптимизирующие компиляторы сами разберутся что положить в регистры.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2013, 17:12
Привет! Вот еще темы с ответами:

Спецификатор преобразования - C++
Доброго времени суток. Сегодня при изучении материала по работе с файлами натолкнулся на такой вопрос. Программы ниже...

Дает ли register прирост в скорости? И есть ли толк в inline? - C++
Всем привет Читал про типы данных и набрел на такую переменную как register. Написано что если ее объявить в программе то, она...

Декларатор (спецификатор типа) - C++
Вопрос невероятно глупый, но помогите разобраться - что задаёт этот декларатор: short int* (*m)(const char x); ?

Спецификатор const у конструктора - C++
Добрый вечер, почему конструктор и деструктор не могут иметь спецификатор const? - если бы было можно можно было бы определить...


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

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

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