2010-03-12 3 views

ответ

1

Int32 и Int64 должны потреблять такое же пространство на всех платформах (означающей Int32 потребляет столько же, сколько другой Int32 на x86 и x64). На всех платформах Int32 должен потреблять различную сумму, чем Int64.

Однако Int32 и Int64 являются плохими примерами, поскольку они являются структурами. Объекты потребляют значительно различное пространство на x64 против x86, потому что они в основном указатели и указатели на x64 в два раза шире, чем на x86. Это относится к адресам функций, адресам перехода, vtables, инструкциям вызова и т. Д. И т. Д. Скомпилированное приложение x64 и JIT-код приложения IL для x64 будут значительно больше, чем его сопоставление x86. Раньше также было, что генерация кода x86 была более зрелой и оптимизирована более агрессивно просто потому, что компиляторы были более зрелыми (это также относится к генерации кода JIT), но компилятор догнал, и теперь дни оптимизации x64 находятся на уровне, если не лучше, чем x86.

+0

Перефразируйте свой ответ: данный экземпляр структуры использует одно и то же пространство памяти на любой платформе. Различные структуры потребляют различное пространство памяти на одной платформе. Только объекты, которые потребляют различное пространство в зависимости от платформы. –

+2

@ estourodepilha.com: не всегда. Одним из примеров этого является то, что структура содержит поле ссылочного типа или поле, зависящее от платформы, например. IntPtr - одно и то же объявление структуры будет потреблять больше памяти на x64. –

1

Нет, они потребляют одинаковое пространство, так как наименьшее адресуемое пространство составляет 64 бит.

+2

@ Лукас: они потребляют столько же места в регистре. Различные количества в памяти. –

1
+0

Ваш ответ полезен, но [вы можете сделать это лучше] (http://meta.stackexchange.com/q/8259), включив сводку или соответствующие части страниц, на которые вы ссылаетесь. Это также поможет вашему ответу оставаться прекрасным, даже если ссылки, которые вы включили, в будущем. – derobert