C++ register спецификатор, определить время выполнения скрипта программы

Что такое модификатор переменной register и как он влияет на время работы программы?

register перед именем переменной заставляет значение этой переменной хранить в регистре центрального процессора или в кэше.

Тем самым в несколько раз ускоряется работа с этой переменной.

Это можно проверить на программе, которая вычисляет время работы кода на С++:

 

#include <iostream>
#include <ctime>
using namespace std;
long start, end;
int main ()
{
    start = clock();
    for (int delay=0;delay<50;delay++){
        for (register int i=0;i<64000000;i++);
    }
    end = clock();
    cout << "runtime = " << end-start;
    return 0;
}

 

Время работы скрипта 1885 (миллисекунд, или микросекунд или тактов работы процессора, нужное вычисляйте сами).

Если убрать модификатор register перед переменной i то время работы кода будет = 7100 (то есть в 7 раз медленнее).

 

Компилятор может проигнорировать register и для разных сред оно может быть различным. Если компилятор исчерпает память быстрого доступа, он будет хранить register-переменные обычным способом.

Имеет смысл объявлять register переменный к переменным цикла, которые ЧАЩЕ всего используются.



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы