В нашем приложении у нас очень большой байтовый массив, и мы должны преобразовать эти байты в разные типы. В настоящее время для этой цели мы используем BitConverter.ToXXXX()
. Наши тяжелые нападающие: ToInt16
и ToUInt64
.
Для UInt64
наша проблема заключается в том, что поток данных имеет фактически 6 байтов данных для представления большого целого. Поскольку нет встроенной функции для преобразования 6-байтов данных в UInt64
, мы делаем:
UInt64 value = BitConverter.ToUInt64() & 0x0000ffffffffffff;
Наше использование ToInt16
проще, не нужно делать никаких манипуляций с битами.
Мы делаем так много из этих двух операций, что я хотел спросить сообщество SO, есть ли более быстрый способ сделать эти преобразования. В настоящее время около 20% всех циклов процессора потребляются этими двумя функциями.