Быстрее (небезопасный) BinaryReader в.NET

Это так же просто, как:

g.V('B').emit().repeat(both().dedup()).toSet()

Вы в основном перемещаетесь в обоих направлениях и излучаете каждую вершину, которую видите, пока не найдете новую вершину.

24
задан Peter Mortensen 27 June 2015 в 06:41
поделиться

3 ответа

Когда вы выполняете копирование файлов, большие куски данных считываются и записываются на диск.

Вы читаете весь файл по четыре байта за раз. Это должно быть медленнее. Даже если потоковая реализация достаточно умна для буферизации, у вас все равно будет как минимум 500 & nbsp; MB / 4 = 131072000 вызовов API.

Разве не разумнее просто прочитать большой кусок данных, а затем последовательно просмотреть их и повторять до тех пор, пока файл не будет обработан?

10
ответ дан Peter Mortensen 28 November 2019 в 23:30
поделиться

Интересно, чтение всего файла в буфер и просмотр его в памяти имело огромное значение. Это происходит за счет памяти, но у нас ее много.

Это заставляет меня думать, что реализация буфера FileStream (или BufferedStream, если на то пошло) некорректна, потому что независимо от того, какой размер буфера я пробовал, производительность все равно снижалась. ] До 2-5 секунд (зависит от дискового кеша I '

10
ответ дан 28 November 2019 в 23:30
поделиться

Одно предостережение; вы можете захотеть дважды проверить порядок байтов процессора ... при условии, что little-endian не вполне безопасен (подумайте: itanium и т. д.).

Вы также можете проверить, не BufferedStream имеет значение (я не уверен).

5
ответ дан 28 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: