Универсальный кэш объектов

Язык C оставляет компилятору некоторую свободу в отношении расположения структурных элементов в памяти:

  • могут появляться отверстия памяти между любыми двумя компонентами и после последнего компонента. Это было связано с тем, что определенные типы объектов на целевом компьютере могут быть ограничены границами адресации
  • «отверстий в памяти», включенными в результат оператора sizeof. Размер sizeof не включает в себя размер гибкого массива, который доступен в C / C ++
  • . Некоторые реализации языка позволяют вам управлять компоновкой памяти структур через параметры прагмы и компилятора

Язык C предоставляет некоторую уверенность программисту в компоновке элементов в структуре:

  • компиляторы должны назначать последовательность компонентов, увеличивая адреса памяти
  • Адрес первого компонента совпадает с начальным адресом структуры
  • неназванные битовые поля могут быть включены в структуру в требуемые выравнивания адресов соседних элементов

Проблемы, связанные с выравниванием элементов:

  • Различные компьютеры строят ребра объектов по-разному
  • Различные ограничения ширины битового поля
  • Компьютеры отличаются тем, как хранить байты в слове (Intel 80x86 и Motorola 68000)

Как работает выравнивание:

  • T объем, занимаемый структурой, вычисляется как размер выровненного одиночного элемента массива таких структур. Структура должна заканчиваться так, чтобы первый элемент следующей ниже структуры не нарушал требования выравнивания

ps. Более подробную информацию можно найти здесь: «Сэмюэл П. Харбисон, Гай Л. Стейле CA Reference, (5.6.2 - 5.6.7) "

12
задан Nicolas 23 September 2008 в 18:40
поделиться

1 ответ

В приложении я могу едва предположить, что оно ускорилось бы/повысило бы производительность, чтобы хранить объекты, которые, по-видимому, могут быть воссозданы (бедро: так как они могут быть автоматически отброшены, когда вершины кэша). Коротковолновый кэш потребовал бы выборки памяти через код associativism, конечно, медленнее затем выделения памяти и конструктора, работающего (главным образом инициализации памяти).

За исключением ручной пользовательской конфигурации для предотвращения механизма подкачки страниц (точно для повышения производительности, btw), большая часть памяти "кэшей" ОС для Вас на диске... это - "подкачка страниц", форма "дорогостоящего кэширования", потому что ничто не выброшено, и это сделано определенным HW, подблоком обработки под названием Блок управления памятью...

Код кэширования, в большом изображении, замедлил бы процессы будучи избыточным.

-5
ответ дан 3 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: