Побитовая работа с мелкими значениями
От: TiberiuZ  
Дата: 20.11.07 16:41
Оценка:
Как в с# быстрее организовать хранение мелких парных данных?
Т.е. надо хранить 2 парные переменные: одна от 0 до 3, другая от 0 до 15 и максимально быстро работать с ними.

вариант стандартный

byte val1=2,val2=14;

struct dannie{byte a;byte b;}

dannie qwe;
qwe.a=val1;
qwe.b=val2;


Вариант более быстрый:1 значение хранится *4 от 0 до 64, а второе от 0 до 3 и они суммируются

int dannie=0;

//присвоение значения 1
dannie=(dannie-dannie%4)+val1;
//считывание значения 1
val1=dannie%4;

//присвоение значения 2
dannie=dannie%4+val2;
//считывание значения 2
val2=(dannie-dannie%4)/4;


Как использовать оператор % с переменной типа byte не знаю.

Хочется взять однобайтовую пеерменную и отвести первые 2 бита под одну переменную, следующие 4 бита под другую.
как это сделать и будет ли это работать быстрее?
Re: Побитовая работа с мелкими значениями
От: Mr.Cat  
Дата: 20.11.07 17:27
Оценка: +1
Здравствуйте, TiberiuZ, Вы писали:
TZ>будет ли это работать быстрее?

Нет. Будет медленнее. Насколько я себе представляю процессор и целочисленные операции, быстрее всего процессор работает с числами "своей" разрядности. А выделение отдельных битов — только лишние операции. Бери int (т.е 2 инта — у тебя же 2 переменные).
Re[2]: Побитовая работа с мелкими значениями
От: TiberiuZ  
Дата: 20.11.07 18:57
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

понятно, спасибо

Еще вопрос.

static public Hashtable mas=new Hashtable();

Как лучше сохранить этот ассоциативный массив в фаил и обратно.

Массив будет использоваться исключительно для выгрузки значений по ключу. Быстрая ли будет выборка из массива, если в нем будет несколько миллионов полей примерно по 64 байта.

SQL очень не хочется использовать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.