У меня есть следующая функция CRC:
public static ushort ComputeCRC16(byte[] data)
{
ushort i, j, crc = 0;
int size = data.Length;
for (i = 0; i < size - 2; i++)
{
crc ^= (ushort)(data[i] << 8);
for (j = 0; j < 8; j++)
{
if ((crc & 0x8000) != 0) /* Test for bit 15 */
{
crc = (ushort)((crc << 1) ^ 0x1234); /* POLYNOMIAL */
}
else
{
crc <<= 1;
}
}
}
return crc;
}
Я пытался использовать его для вычисления CRC16 из файла размером около 800 Кб, но это занимает вечность, я имею в виду, через пять минут,значение i
по-прежнему составляло около 2 000, и оно должно доходить до 800 000.
Может кто-нибудь дать мне объяснение, почему оно так медленно и что я могу сделать, чтобы решить эту проблему?
Я работаю с Visual Studio 2015 на процессоре i7, и компьютер не старый и не сломанный.