Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
6 / 6 / 2
Регистрация: 09.02.2016
Сообщений: 138

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

08.08.2017, 16:44. Показов 3131. Ответов 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
21285 / 8310 / 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
21285 / 8310 / 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
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru