VirtualIreland.ru - Виртуальная Ирландия
Вернуться   VirtualIreland.ru - Виртуальная Ирландия > Живем в Ирландии > IT и Связь

IT и Связь Обсуждение "айтишных" вопросов и средств связи

Ответ
 
Опции темы Опции просмотра
Старый 06.12.2007, 21:55   #1
Заслуженный Участник
 
Аватар для AlexM
 
Сообщений: 1,464
Благодарности: 52 в 30 сообщениях Поиск благодарностей AlexM
По умолчанию размер данных в С#

вот, наткнулся Figure 1 .NET Value Types
и что-то не понятно мне, сколько RAM надо в манагед коде для System.Boolean на 32-битном компе? а на 64-битном? а если это не System.Boolean-переменная, а массив из 10 штук System.Boolean?
__________________
Lies, damn lies, and statistics.
AlexM вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 07.12.2007, 07:48   #2
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

эксперимент показывает что на 32-разрядном - 8 бит. это если массив, по крайней мере. видимо на 64-разрядном та же фигня.
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 07.12.2007, 13:21   #3
Заслуженный Участник
 
Аватар для AlexM
 
Сообщений: 1,464
Благодарности: 52 в 30 сообщениях Поиск благодарностей AlexM
По умолчанию Re: размер данных в С#

я почему-то думал, что на 32-битном процессоре если читаешь из памяти в регистр, то читаешь всегда 4 байта - это не так?
__________________
Lies, damn lies, and statistics.
AlexM вне форума   Ответить с цитированием
Старый 07.12.2007, 14:25   #4
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

эта... там вообще-то CIL, а не ассемблер х86.

а если интересует во что это конкретно компилируется при исполнении на x86, то там byte ptr-ы и все дела...
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 07.12.2007, 14:25   #5
Редкий собеседник
 
Сообщений: 2,663
Благодарности: 906 в 585 сообщениях Поиск благодарностей TYA
По умолчанию Re: размер данных в С#

В C++ 'bool' от реализации зависит, насколько мне известно. М$ сделала его 1 byte. Для кросс-платформенности - забей на 'bool', как правило его удобнее представлять в виде 32 бит, и структуры легче выравнивать и их размер считать. А для экономии места можно и 8 бит, сам понимаешь, тогда надо следить за тем как данные будут выравнены, чтоб кросс-платформенность не поплыла.
__________________
Steve Jobs:"It's better to be a pirate than to join the Navy."
-- Odyssey: Pepsi to Apple
TYA вне форума   Ответить с цитированием
Старый 07.12.2007, 14:32   #6
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

вот сейчас на том же эксперементальном коде проверил:

результат проверки на "одно меньше другого" записывается в булевское значение в массиве фактически тремя командами

1. сравнением
2. setl al (в результате которой в младший байт eax попадает единичка)
3. move byte ptr [ebx+...], al

как дохтур прописал.

KaraNagai добавил 07.12.2007 в 15:34
Цитата:
Для кросс-платформенности - забей на 'bool',
для кроссплатформенности на сишарпе-то? ) плакалъ

в CLI, если я правильно понимаю, булевское значение всегда 8 байт. так что ответ на вопрос про 64-битный комп такой же, как и в 32-битном случае.

Цитата:
. А для экономии места можно и 8 бит,
для экономии места надо массив булевский битарреем представлять.

KaraNagai добавил 07.12.2007 в 15:35
Цитата:
в результате которой в младший байт eax попадает единичка
я имею в виду если тру.
__________________
митьки никого не хотят победить

Последний раз редактировалось KaraNagai, 07.12.2007 в 14:35. Причина: Добавлено сообщение
KaraNagai вне форума   Ответить с цитированием
Благодарность от:
Kot (11.12.2007)
Старый 07.12.2007, 14:50   #7
Редкий собеседник
 
Сообщений: 2,663
Благодарности: 906 в 585 сообщениях Поиск благодарностей TYA
По умолчанию Re: размер данных в С#

Цитата:
Сообщение от KaraNagai Посмотреть сообщение
для кроссплатформенности на сишарпе-то? ) плакалъ
А ты уже не видишь разности между 'managed' и 'unmanaged'? Читай ссылку выше.

Я сам недавно с этим столкнулся, когда даже пришлось 'managed' структурам явно указывать, что порядок их членов должен быть таким как я его указал, чтоб CLR несоизвольничал, размер структур должен быть 16-byte aligned, повезло, что не надо было явно указывать смешение членов внутри структуры.
Вот кто плакал, так это точно был я.
__________________
Steve Jobs:"It's better to be a pirate than to join the Navy."
-- Odyssey: Pepsi to Apple
TYA вне форума   Ответить с цитированием
Старый 07.12.2007, 15:10   #8
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

Цитата:
А ты уже не видишь разности между 'managed' и 'unmanaged'? Читай ссылку выше.
не понял что ты хотел сказать. тема топика - про размер сишарпоавского булеана в менеджед коде. о какой кроссплатформенности кода речь вообще? CLR - он и в африке CLR. кода портировать-то? или ты про сериализацию структур данных и работу с нейтив кодом? ну дык сериализация - при сериализации и разбираемся. а что до нейтив кода - то тут уже зависит от того как ты с ним работаешь. короче, есть специальные случаи, а есть общие. совет "не юзать bool" при написании кода на C# явно на общий случай не тянет.
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 07.12.2007, 15:37   #9
Заслуженный Участник
 
Аватар для AlexM
 
Сообщений: 1,464
Благодарности: 52 в 30 сообщениях Поиск благодарностей AlexM
По умолчанию Re: размер данных в С#

Цитата:
Сообщение от KaraNagai Посмотреть сообщение
3. move byte ptr [ebx+...], al
по-видимому я искал вот этот ответ...
поведай мне, эта команда кладет содержимое младшего байта регистра в память по адресу или весь регистр?
__________________
Lies, damn lies, and statistics.
AlexM вне форума   Ответить с цитированием
Старый 07.12.2007, 15:40   #10
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

al - это младшие 8 бит eax.

KaraNagai добавил 07.12.2007 в 16:40
только в терминах регистров x86 мыслить тут опасненько имхо.
__________________
митьки никого не хотят победить

Последний раз редактировалось KaraNagai, 07.12.2007 в 15:40. Причина: Добавлено сообщение
KaraNagai вне форума   Ответить с цитированием
Благодарность от:
AlexM (07.12.2007)
Старый 07.12.2007, 18:41   #11
Редкий собеседник
 
Сообщений: 2,663
Благодарности: 906 в 585 сообщениях Поиск благодарностей TYA
По умолчанию Re: размер данных в С#

Цитата:
Сообщение от KaraNagai Посмотреть сообщение
не понял что ты хотел сказать. тема топика - про размер сишарпоавского булеана в менеджед коде.
В ссылке выше четко сказано: System.Boolean in Managed == 1 byte, Unmanaged == 4 bytes.
Чего обсуждать? Разве, что если разницу между 'managed' и 'unmanaged'.
Цитата:
Сообщение от KaraNagai Посмотреть сообщение
о какой кроссплатформенности кода речь вообще?
Да хотя бы 32-bit и 64-bit? Одна платформа? Хотя для C# один хрен.
Да, к тому же я, не знаю почему у меня создалось впечатление, что речь может идти о доступе к bool из unmanaged кода, раз о RAM, а потом о регистрах заговорили.
__________________
Steve Jobs:"It's better to be a pirate than to join the Navy."
-- Odyssey: Pepsi to Apple
TYA вне форума   Ответить с цитированием
Старый 07.12.2007, 20:14   #12
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

Цитата:
В ссылке выше четко сказано: System.Boolean in Managed == 1 byte, Unmanaged == 4 bytes. Чего обсуждать?
Правильно, ничего. Человек пишет менеджд код. Всё. 1 байт.

Цитата:
Да хотя бы 32-bit и 64-bit? Одна платформа? Хотя для C# один хрен.
Дык о чём я и говорю. Один хрен. Менеджд код. См. постановку задачи, так сказать

Цитата:
не знаю почему у меня создалось впечатление, что речь может идти о доступе к bool из unmanaged кода, раз о RAM, а потом о регистрах заговорили.
Ну эт довод. Да, пока непонятно почему заговорили за регистры. Про RAM ещё понять можно оставаясь и в пределах менеджд кода.
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 11.12.2007, 14:07   #13
Спам-робот
 
Аватар для vc
 
Сообщений: 31,257
Благодарности: 21,993 в 10,697 сообщениях Поиск благодарностей vc
По умолчанию Re: размер данных в С#

Цитата:
Сообщение от AlexM Посмотреть сообщение
я почему-то думал, что на 32-битном процессоре если читаешь из памяти в регистр, то читаешь всегда 4 байта - это не так?
Если имеется ввиду Intel CPU x86 о там можно хоть биты читать. А физически шина данных она 32 битная на 32-битной архитектуре и 64 битная на 64 битной.
vc вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 11.12.2007, 14:13   #14
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию Re: размер данных в С#

vc ты не вполне прав. шина данных 64 бита была у первых пентиумов уже, что не делает их 64-разрядными процессорами.
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 11.12.2007, 14:18   #15
Спам-робот
 
Аватар для vc
 
Сообщений: 31,257
Благодарности: 21,993 в 10,697 сообщениях Поиск благодарностей vc
По умолчанию Re: размер данных в С#

Не знал, не знал. Может она сбоку прикручена была?
По-крайней мере для пользователя это было неочевидно.
vc вне форума   Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать на сообщения
Вы не можете добавлять вложения
Вы не можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщ.
Размер арендной платы (rent) D_IRL Хозяин в доме 49 10.10.2007 22:51
Размер Аватары Inferno Вопросы и предложения 15 22.08.2007 15:25
Про базы данных alz IT и Связь 7 29.01.2007 09:40
размер шрифтов, иконки, темы ерёма Вопросы и предложения 20 06.12.2006 14:03
марки, модели - общая база данных? KaraNagai Автотранспорт 15 23.06.2003 05:44


Часовой пояс GMT, времени сейчас: 18:42.


vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd., Русификация: zCarot, Vovan & Co
©2003-2025 VirtualIreland.ru - Виртуальная Ирландия