|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
Эффективное выделение памяти11.04.2017, 16:49. Показов 3470. Ответов 25
Метки нет (Все метки)
Много раз встречал что размер выделенной памяти рекомендуется округлять до степени двойки. Почему?
Так же еще встречался с мнением что в некоторых случаях лучше округлять размер выделенной памяти так, что бы она была равна размеру страницы памяти. То есть если нужно 4030 байт, то выделяют 4096? Еще насколько я знаю размер страницы может быть разным. Если такое выделение эффективное (интересно почему), то есть ли переносимый способ узнать на этапе компиляции размер страницы?
0
|
|
| 11.04.2017, 16:49 | |
|
Ответы с готовыми решениями:
25
Эффективное использование памяти Выделение памяти, проверка на утечку памяти Распределение памяти. Динамическое выделение памяти |
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 11.04.2017, 18:42 [ТС] | ||
Вот скажем есть 2 страницы в каждой из которой есть одна переменная intИз твоих утверждений если я правильно понимаю эти две переменные не могут быть записаны в одну линейку Но не могу понять почему... линейка же со страницами никак не связана, или я ошибаюсь? То есть один поток может использовать две эти переменные которые попадут в одну линейку (насколько я знаю у проца нет специальной фичи чтоб разделять по разным линейкам данные из разных страниц) И еще может быть так что все линейки имеют актуальные данные которые не нужно вытеснять но при этом есть возможность сложить данные с двух страниц в одну линейку. В противном случае инвалидировать актуальную линейку думаю было бы не эффективно Я конечно ничего не утверждаю... просто так думается мне, объясни плиз в чем я ошибаюсь
0
|
||
|
Ушел с форума
|
|
| 11.04.2017, 18:53 | |
|
Данные из памяти не попадают в кэш процессора "абы как". Если ты читаешь один байт
по адресу 0xF0007, то в кэш CPU попадет весь блок от 0xF0000 до 0xF001F включительно (подразумеваем, что размер линии кэша - 32 байта). Как в эту же линейку могут попасть данные из другой страницы, например 0xF1000?
1
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 11.04.2017, 19:13 [ТС] | |
|
Убежденный,
Блин, точно. Вспомнил. Верно говоришь ![]() Но тогда достаточно выравнивать по размеру кеш лайна чтоб понять кто с кем будет в одной линейке что тоже поможет избежать фолс шеринга Добавлено через 14 минут Убежденный, А вот еще одна мысль. Есть например структура размер которой равен 32 байта Первые 16 байт находятся в конце первой страницы а следующие 16 в начале второй (не уверен что так бывает) Если так бывает то при чтении sizeof(cache_line) то с первой странице будет скачок на вторую чтоб прочитать всю структуру и положить в кеш. Надеюсь я не сильно надоел))
0
|
|
|
Ушел с форума
|
|||||
| 11.04.2017, 19:23 | |||||
|
11.1 INTERNAL CACHES, TLBS, AND BUFFERS
Просто не существует хорошего и переносимого способа быстро определить размер линейки кэша на текущем CPU. А page size, как правило, известен еще на стадии компиляции.
2
|
|||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 11.04.2017, 19:41 [ТС] | |
|
Убежденный,
Ясно, спасибо!
0
|
|
|
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
|
||
| 11.04.2017, 21:30 | ||
|
0
|
||
| 11.04.2017, 21:30 | |
|
Выделение памяти Выделение памяти(С = С++) Выделение памяти Выделение памяти Выделение памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|