Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Подскажите, если есть класс и есть объекты этого класса, то при создании объекта этого класса где в памяти расположены методы данного класса, как это выглядит, один метод для всех объектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 15:35 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17, Конечно один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 15:49 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Метод компилируется в обычную функцию, к которой добавляется еще один параметр T* this, т.е. указатель на данные объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 15:52 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Dima T, я имел в виду ассемблерный код. Т.е. есть где-то в памяти располагается ф-ия которая при вызове получает адресс экземпляра класса и на основании этого адресса вычисляет значения полей класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:01 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Как все это устроено, я что-то даже не соображу где про это почитать можно, кроме как самому отладчик запускать и смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:03 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17Dima T, я имел в виду ассемблерный код. Т.е. есть где-то в памяти располагается ф-ия которая при вызове получает адресс экземпляра класса и на основании этого адресса вычисляет значения полей класса? Да. Объект это тоже самое что структура. Как структура в памяти располагается представляешь? Расположение полей жестко закреплено относительно адреса объекта. Например Код: plaintext 1. 2. 3. 4. После компиляции выглядит так Код: plaintext 1. 2. 3. 4. 5. Если есть виртуальные методы, то в структуру добавляется таблица виртуальных методов, т.е. таблица адресов методов для этого объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:21 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17Как все это устроено, я что-то даже не соображу где про это почитать можно, кроме как самому отладчик запускать и смотреть. Ты с какой целью интересуешься? Обычно все что надо знать по этой теме - это sizeof(), сколько памяти объект занимает и про выравнивание структур . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:24 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Dima TОбычно все что надо знать по этой теме - это sizeof() зачем себя так ограничивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:37 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Dima T, без конкретной цели, любопытство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:45 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Dima Tda17Как все это устроено, я что-то даже не соображу где про это почитать можно, кроме как самому отладчик запускать и смотреть. Ты с какой целью интересуешься? Обычно все что надо знать по этой теме - это sizeof(), сколько памяти объект занимает и про выравнивание структур . я читал эту статью, только одного не понял, если процессор считывает данные по 4 байта, и в случае если ему необходимо получить данные размером байт, куда он их, сразу в регистр какой-нибудь считывает, потом ведь придется этот байт извлекать, что потребует дополнительных операций. В чем экономия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 16:55 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17Dima T, без конкретной цели, любопытство Тогда стоит ассемблер поизучать. da17я читал эту статью, только одного не понял, если процессор считывает данные по 4 байта, и в случае если ему необходимо получить данные размером байт, куда он их, сразу в регистр какой-нибудь считывает, потом ведь придется этот байт извлекать, что потребует дополнительных операций. В чем экономия? Это уже специфика работы процов, я глубоко эту тему не изучал, гугли выравнивание данных в памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 17:16 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
В вике не сообщено главное: x86-архитектура "прощает" невыровенные чтение/запись - аппаратура сама разберёт/соберёт обращение к невыровненному участку памяти. Хотя во флагах процессора предусмотрен и "строгий режим". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 17:24 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВ вике не сообщено главное: x86-архитектура "прощает" невыровенные чтение/запись - аппаратура сама разберёт/соберёт обращение к невыровненному участку памяти. Хотя во флагах процессора предусмотрен и "строгий режим". Есть еще SSE и AVX, кторые требуют выравнивания. Intel про выравнивание авторКогда мы оперируем с элементами массивов (и не только с ними), то на самом деле постоянно работаем с кэш-линиями размером по 64 байта. SSE и AVX векторы всегда попадают в одну кэш линию, если они выравнены по 16 и 32 байта, соответственно. А вот если наши данные не выравнены, то, очень вероятно, нам придётся подгружать ещё одну «дополнительную» кэш-линию. Я так понимаю если даже 2 байта не выравненные попадут на стык кэш-линий, то уже будет доп.тормоз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 17:36 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Dima TЕсть еще SSE и AVX, кторые требуют выравнивания.Странно требовать от "векторизирующих" расширений, ориентированных на максимальную скорость обработки, халявы с доступом в память. Особенно с учётом того, что доступа этого с гулькин нос.Я так понимаю если даже 2 байта не выравненные попадут на стык кэш-линий, то уже будет доп.тормоз.Странный вы человек ... Невыровненные чтения - тормоз при любом раскладе. Какая разница, сколько добавят к уже имеющимся накладным расходам эффекты второго порядка. Важно то, что остальные архитектуры требуют выравнивать данные и наказывают расхлябанность исключениями и прочими малоприятными вещами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 17:45 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВажно то, что остальные архитектуры требуют выравнивать данные IBM/370 от этого уже отказась в незапяматные годы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 17:51 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Dima T...Если есть виртуальные методы, то в структуру добавляется таблица виртуальных методов, т.е. таблица адресов методов для этого объекта. Не таблица, а только указатель на нее. В случае множественного наследования - несколько указателей. Все можно легко увидеть с помощью godbolt.org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 19:30 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17Dima Tпропущено... Ты с какой целью интересуешься? Обычно все что надо знать по этой теме - это sizeof(), сколько памяти объект занимает и про выравнивание структур . я читал эту статью, только одного не понял, если процессор считывает данные по 4 байта, и в случае если ему необходимо получить данные размером байт, куда он их, сразу в регистр какой-нибудь считывает, потом ведь придется этот байт извлекать, что потребует дополнительных операций. В чем экономия? Играть с опциями pragma кмк имеет смысл только тогда, когда нужно быстро сериализировать большие множества объектов на диск. И при этом нужны гарантии что эти структуры на диске можно потом как-то разобрать и распарить в другой системе (среде или ЯП). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 23:33 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
mayton, Не только на диск, но и в сеть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 23:45 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17я читал эту статью, только одного не понял, если процессор считывает данные по 4 байта, и в случае если ему необходимо получить данные размером байт, куда он их, сразу в регистр какой-нибудь считывает, потом ведь придется этот байт извлекать, что потребует дополнительных операций. В чем экономия?вроде как это всё делается через регистры общего назначения. Например, для 4 байт используется eax, для двух ax, для байта al (ah для верхнего байта нижнего слова). Это всё один регистр, просто разные его части. Записав в eax 1, получим в al тоже 1. Как это реализовано в железе, я не знаю. Код можно посмотреть под отладкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 05:13 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17я читал эту статью, только одного не понял, если процессор считывает данные по 4 байта, и в случае если ему необходимо получить данные размером байт, куда он их, сразу в регистр какой-нибудь считывает, потом ведь придется этот байт извлекать, что потребует дополнительных операций. В чем экономия? Для простоты операции с регистрами можно считать бесплатной. Это даже быстрее кеша L1 https://habrahabr.ru/post/108537/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 07:34 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
Siemarglda17я читал эту статью, только одного не понял, если процессор считывает данные по 4 байта, и в случае если ему необходимо получить данные размером байт, куда он их, сразу в регистр какой-нибудь считывает, потом ведь придется этот байт извлекать, что потребует дополнительных операций. В чем экономия? Для простоты операции с регистрами можно считать бесплатной. Это даже быстрее кеша L1 https://habrahabr.ru/post/108537/ ясно, т.е. главное взять данные из памяти, а временными затратами на обработку пренебрегаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 11:12 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17ясно, т.е. главное взять данные из памяти, а временными затратами на обработку пренебрегаем. этих "затрат" может даже не быть, но это уже на уровне микроархитектуры смотреть нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 11:23 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
получается вся "задумка" выравнивания нужна исключительно для удобства обмена данными, а про быстродействие и речи даже не идет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 13:30 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17получается вся "задумка" выравнивания нужна исключительно для удобства обмена данными, а про быстродействие и речи даже не идет? выравнивание как раз для быстродействия. упаковка - для обмена данными выравнивание применяется ещё и на границу линии кэша или на границу страницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 13:45 |
|
||
|
Как объект выглядит в памяти.
|
|||
|---|---|---|---|
|
#18+
da17получается вся "задумка" выравнивания нужна исключительно для удобства обмена данными, а про быстродействие и речи даже не идет? Наоборот. Для быстродействия надо выравнивание. Для обмена надо отключение выравнивания, чтобы "дырки" не занимали лишнее место на диске или лишний трафик не создавали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 13:46 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39450848&tid=2018178]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 272ms |

| 0 / 0 |
