Преобразовать файл (4 Гб) в последовательность байт - C#

Узнай цену своей работы

Формулировка задачи:

Собственно, стоит задача преобразовать файл и посчитать кол-во 0 и 1. Программа работает, но на файл размером 4Гб уходит около 4-х минут. Можно ли каким-то образом сократить время работы?
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
                    BinaryReader br = new BinaryReader(fs);
                    byte[] chunk;
                    chunk = br.ReadBytes(chunk_size);
                    while (chunk.Length > 0)
                    {
                        for (int j = 0; j < chunk.Length; ++j)
                        {
                            byte num = chunk[j];
                            for (int i = 7; i >= 0; --i)
                            {
                                if ((num & (1 << i)) != 0)
                                    ++res_1;
                                else
                                    ++res_0;
                            }
                        }
                        chunk = br.ReadBytes(chunk_size);
                    }

Решение задачи: «Преобразовать файл (4 Гб) в последовательность байт»

textual
Листинг программы
 
static void B()
        {
            string path = "";
            int chunk_size = 100;
            int res_1 = 0;
            int res_0 = 0;
 
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            byte[] chunk;
            chunk = br.ReadBytes(chunk_size);
            while (chunk.Length > 0)
            {
                for (int j = 0; j < chunk.Length; ++j)
                {
                    byte num = chunk[j];
                    res_0 += CountBitTable[num];
                    res_1 += 8 - CountBitTable[num];
                }
                chunk = br.ReadBytes(chunk_size);
            }
        }
 
        static byte[] CountBitTable = 
        {
            0 ,1 ,1 ,2 ,1 ,2 ,2 ,3 ,1 ,2 ,2 ,3 ,2 ,3 ,3 ,4 ,
            1 ,2 ,2 ,3 ,2 ,3 ,3 ,4 ,2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,
            1 ,2 ,2 ,3 ,2 ,3 ,3 ,4 ,2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,
            2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,
            1 ,2 ,2 ,3 ,2 ,3 ,3 ,4 ,2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,
            2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,
            2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,
            3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,4 ,5 ,5 ,6 ,5 ,6 ,6 ,7 ,
            1 ,2 ,2 ,3 ,2 ,3 ,3 ,4 ,2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,
            2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,
            2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,
            3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,4 ,5 ,5 ,6 ,5 ,6 ,6 ,7 ,
            2 ,3 ,3 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,
            3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,4 ,5 ,5 ,6 ,5 ,6 ,6 ,7 ,
            3 ,4 ,4 ,5 ,4 ,5 ,5 ,6 ,4 ,5 ,5 ,6 ,5 ,6 ,6 ,7 ,
            4 ,5 ,5 ,6 ,5 ,6 ,6 ,7 ,5 ,6 ,6 ,7 ,6 ,7 ,7 ,8 
        };

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы