C++ register спецификатор, определить время выполнения скрипта программы
Тэги: язык С основы язык С полезные программы
📅22-10-2018 👁350
Что такое модификатор переменной 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 переменный к переменным цикла, которые ЧАЩЕ всего используются.
Оставить свой ответ: