6 / 6 / 2
Регистрация: 09.02.2016
Сообщений: 138

Узнать, находится ли в кеше процессора переменная?

08.08.2017, 16:44. Показов 3141. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Есть ли возможность узнать, находится ли в кеше процессора переменная?
Время доступа к ней постоянно "пляшет". То быстро, то очень долго, хотелось бы выявить точную причину.

gcc 4.8

Добавлено через 47 минут
Частично помогло выравнивание структуры. Сократило большую задержку вдвое.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2017, 16:44
Ответы с готовыми решениями:

Сколько раз находится одна и таже переменная в строчке?
Привет. У меня возникла проблема. В моём Матлаб коде я генерирую себе из файла код ассемблера, который хочу анализировать. Этот код Матлабу...

Переменная не выводится, если определенная строка находится в теле условия
Привет! Помогите понять почему переменная не выводится , если строка $user = $_SESSION; находится в теле условия. А если вынести эту...

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

44
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
16.08.2017, 12:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
И начинают меня терзать сомнения насчёт того, что тут исключительно вопрос терминологии.
Возможно, я впревые встречаю понятие page miss, (покрайне мере это фигурирут в ядре linux как minor page fault). Так или иначе спасибо за дискусию.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
16.08.2017, 12:38
Цитата Сообщение от stima Посмотреть сообщение
как minor page fault
Значит мы и в правду одни и те же вещи называем разными терминами
0
6 / 6 / 2
Регистрация: 09.02.2016
Сообщений: 138
13.09.2017, 17:54  [ТС]
Темы не буду плодить, попробую продолжить дискуссию.

Раньше придерживался правила, что лучше создать глобальную переменную 1 раз, чем каждый раз создавать ее в теле какой то функции. Мотивировал это тем, что программа не будет тратить время на ее создание еще раз.

А тут пришла мысль. А что если у переменной очень короткий жизненный цикл, то она не создается в памяти? а просто сидит в кеше процессора.
Поднял свой код. И запустил 2 одинаковых процесса. Но у одного переменные объявлены глобально в cpp, у другого внутри функции. Переменных не мало. Около 15 по 8 байт.

Процесс с локальным объявлением показал гораздо лучше и самое главное - ровнее результаты.

Хотелось бы подкрепиться теоретической частью, с чем это связано? Неужели "короткие" переменные не уходят в память?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21287 / 8312 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
13.09.2017, 20:11
Это связано с тем, что компилятор видит всю жизнь локальной переменной и может работать с ней эффективно, в том числе вообще не помещать в память а держать исключительно на регистрах. Про глобальную переменную компилятор не знает ничего и обязан перестраховываться при каждом чихе. Типа того, что

C
extern void bar (void);
void foo (void)
{
  int x, y;
 
  x = 1;
  bar ();
 
  /* В этой точке значение локальной переменной "x" гарантированно равно 1,
   * т.к. вызов функции bar не мог её изменить. Но если бы x была глобальной,
   * то таких выводов делать нельзя, т.к. внутри bar могла быть модификация x.
   * Таким образом, компилятор построит код "y=1", а переменную x удалит
   * за ненадобностью */
  y = x;
}
Добавлено через 27 секунд
Кстати, с кэшем это вообще никаким боком не связано
1
6 / 6 / 2
Регистрация: 09.02.2016
Сообщений: 138
13.09.2017, 21:05  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Кстати, с кэшем это вообще никаким боком не связано
про регистр я и не подумал. Это наверное мой случай. То есть я был прав, что переменная может до памяти и не дойти. Когда идет обращение к памяти, я в своих тестах обычно сразу вижу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.09.2017, 21:05

Узнать с каким значением переменная IncreaseUserVa
Здравствуйте!! Ребята, подскажите по такому вопросу. В интернете на форумах есть описание того, как можно заставить Windows 7, а именно...

Как правильно указать что переменная типа integer находится в диапазоне чисел от 1 до 16 и является чётной?
Здравствуйте. Как правильно указать что переменная типа integer находиться в диапазоне чисел от 1 до 16 и является чётной? begin for...

Как узнать что переменная равна -1.#IND
Использую функцию atof(); чтобы преобразовать строку в переменную типа double Но иногда эта функция присваивает переменной double...

Узнать в какой области видимости объявлена переменная
Салют, народ. Прислали мне какое-то мутное тестовое задание. Нужно при создании/объявлении объекта как-то узнать в какой области видимости...

Как узнать содержит ли переменная необходимый текст?
В переменную "str_1" программа собирает текст. В результате str_1 = "текст_1, текст_2, текст_3". В переменную...


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

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

Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru