Скорость работы winApi в MFC и CLR проектах
На всякий случай, спрофилировал. Неуправляемый код работает чуть быстрее, чем C++/CLI, но это отношение не превышает отметки 1,2.
Добавил к марафону проект C#. C++/CLI CreateFile() и C# File.OpenRead() сравнимы, почти один к одному. Файлы 64 kB, 34MB и 699MB.
Дык одно другое использует.
Неплохо было бы увидеть код автора. Напортачить с чтением можно везде.
ifstream file_stream;
//Открытие файла
file_stream.open(FileName, ios_base::binary);
if(!file_stream.is_open()) {
return;
}
while (!file_stream.eof())
{
file_stream.read((char *)&bb, 2);
inputValue = bb.inputValue;
i++;
}
Буферизировать, понятное дело, не пробовали. Почти уверен - если положить FileStream под BufferedStream различия в скорости работы программ сойдет на нет.
Это как бы вещи из разных миров - ifstream из стандартной C++ библиотеки, тогда как BufferedStream - из стандартной библиотеки CLR.
Я к тому, что читать по два байта из потока - слишком медленно, тем более когда структура данных известна и столь примитивна. Гораздо удобнее считать все в отдельный массив и обрабатывать уже его.
Считать в byte[] целый кусок данных, затем можно воспользоваться небезопасным кодом и представить byte[] как набор двухбайтовых чисел.
Действительно. Странно что в голову не пришло.