|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
|
Ключевое слово "register"23.01.2017, 08:05. Показов 3219. Ответов 14
Метки нет (Все метки)
По-тихоньку с чистого Си перехожу на плюсы и хотелось бы понять, теряю ли я что-то, объявляя переменную как register. То есть теперь у меня не мало локальных переменных, объявленных в разных частях программы и хочется быть увереннеым, что "больше" не оптимизируешь.
Просто в MSDN (Пишу в VS) нарвался на такое : " Начиная с версии Visual C++ 2010, ключевое слово auto не является описателем класса хранения C++, а ключевое слово register считается устаревшим." Но ведь стандарт не полагает, что теперь любой компилятор поймет, что моя переменная - счетчик цикла? И не делаю ли я хуже (медленее) , когда пишу с модификатором register ? И может ли получится, что делаю его чуть быстрее или нет?
0
|
|
| 23.01.2017, 08:05 | |
|
Ответы с готовыми решениями:
14
Ключевое слово try |
|
|
|
| 23.01.2017, 09:23 | |
|
Современные компиляторы в состоянии сами разобраться, что класть на регистр, а что нет. Если хочешь ускорить программу, то надо её ускорять за счёт правильного проектирования. А локальные вещи типа "замена умножения на степень двойки на сдвиг" или "распределение переменных на регистр" компилятор почти всегда сделает лучше программиста
2
|
|
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
|
| 23.01.2017, 15:21 [ТС] | |
|
Evg, то есть это абсолютно бесполезно? Мне просто не сложно писать register, хотя бы для самоуспокоения. Про то что компиляторы нынче умнее мне уже говорили, но все ли компиляторы сейчас такие разумные?
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 23.01.2017, 15:44 | ||
|
2
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||||
| 23.01.2017, 15:44 | ||||
Сообщение было отмечено Убежденный как решение
РешениеВот представь, учишься ты, привык писать register везде, где тебе кажется осмысленным. Потом устроился на работу, а там никто так не пишет. Потому что знают, что современные компиляторы это слово игнорируют, а, начиная с С++17 (да-да, стандарт говорит),
PS. Даже если компилятор не игнорирует register, то это не значит, что он будет делать все так, как ты ожидаешь. register - всегда был лишь рекомендацией, а не строгим предписанием.
4
|
||||
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
|||
| 23.01.2017, 15:48 [ТС] | |||
|
Спасибо за ответы.
0
|
|||
| 23.01.2017, 16:39 | ||
|
Не по теме:
0
|
||
| 23.01.2017, 16:57 | ||
|
Не по теме:
Что касается register... Некоторые тут древним называют все, что старше 8-15 лет. Поэтому, что касается register, то он игнорируется уже очень давно, можно сказать, с древних времен :)
0
|
||
|
|
||
| 23.01.2017, 17:04 | ||
|
Вот возьмём, к примеру, сортировку массива. Если ты её напишешь любым квадратичным методом (например, методом пузырька), но сколько бы ты не писал register, inline, сдвиги вместо умножения и т.п., быстро у тебя это сортировка работать не будет никогда и никакие опции оптимизации тебя не спасут. Единственный способ ускорить сортировку - это переписать программу, заменив квадратичную сортировку, на логарифмическую (например, qsort). Программы нужно ускорять именно так. А если для успокоения будешь писать register, то это будет втирание очков самому себе и ничего более
1
|
||
| 23.01.2017, 17:07 | |
|
Не по теме: GbaLog-, Давай так, под современным я понимаю - 21 век, ну и самый конец 20-го. На случай если ты где-то еще увидишь от меня это слово.
0
|
|
| 23.01.2017, 17:09 | ||
|
Не по теме:
Oracle уже много лет сидит на intel'овском компиляторе очень дремучей версии. И intel занимается поддержкой этого древнего компилятора только ради того, чтобы Oracle с него не слез. Потому что если oracle'у вдруг придётся с этой версии компилятора уходить, то им проще будет уйти на другой компилятор, потому что нет принципиальной разницы между переходом на intel'овский компилятор современной версии или любой другой - при любом ракладе придётся кучу времени угробить на отладку. Сию вещь мне рассказывали года 3 назад, может ситуация и поменялась, но переходить с одного на другое только ради того, чтобы вместо "a" можно было написать "b", в коммерческих компаниях не станут
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 23.01.2017, 17:33 | ||
|
Сейчас в нём используются все прелести С++11(14). Легаси есть, но его сравнительно мало. Периодически, код освежается. И не думайте, что кодовая база мала - порядка 2кк строк кода в основном решении. (Кто-то, возможно, скажет, что это немного, но думаю малым количеством это не назовёшь). Добавлено через 3 минуты Ну и, само собой, https://habrahabr.ru/company/p... og/319824/
2
|
||
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
||
| 23.01.2017, 18:11 [ТС] | ||
|
Просто даже в стандарте было написано,что register стоит использовать,если "Вы хотите,чтобы скорость работы вашей программы была максимальна". Но и про то что это лишь "просьба" компилятору - я понимаю, читал много раз,что он имеет право игнорировать подобные "просьбы".
0
|
||
| 23.01.2017, 18:34 | ||||||
|
Не по теме:
0
|
||||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 23.01.2017, 18:44 | ||
|
0
|
||
| 23.01.2017, 18:44 | |
|
Помогаю со студенческими работами здесь
15
Ключевое слово this Ключевое слово this Ключевое слово static
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|