Каково оптимальное (скорость) способ проанализировать большое (> 4 ГБ) текстовый файл со многими (миллионы) строк?

Не следует изменять файлы в пути вывода сборки. Есть два пути. Либо вы используете исходное дерево ядра или u-boot, к которому применены ваши изменения, либо применяете сгенерированные патчи из сделанных изменений. В обоих случаях вам нужно написать рецепт бит-бека для одного и того же. Пожалуйста, обратитесь к руководствам Yocto для деталей. Недавно я писал о разработке пакета поддержки плат здесь . Однако вам необходимо понять, как использовать и писать существующие / пользовательские слои и рецепты битового теста, а также ту информацию, которую вы найдете в руководствах по Yocto.

6
задан llamaoo7 5 January 2009 в 23:24
поделиться

7 ответов

У Вас есть пример кода того, что Ваше выполнение или формат файла Вы читаете?

Другой хороший вопрос состоял бы в том, сколько из потока Вы остающийся в памяти за один раз?

3
ответ дан 17 December 2019 в 00:15
поделиться

StreamReader довольно хорош - как Вы читали его в Python? Возможно, что при определении более простого кодирования (например, ASCII) затем, это может ускорить вещи. Сколько ЦП берет процесс?

Можно увеличить размер буфера при помощи соответствующего конструктора StreamReader, но я понятия не имею, сколько значения это, вероятно, будет иметь.

2
ответ дан 17 December 2019 в 00:15
поделиться

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

Статья Wikipedia о сигнальных метках не полезна вообще; это не описывает этот случай. Можно найти описание в любом из учебников алгоритмов Robert Sedgewick.

Вы могли бы также хотеть посмотреть на re2c, который может сгенерировать очень быстрый код для сканирования текстовых данных. Это генерирует код C, но Вы можете адаптировать его, и можно, конечно, изучить методы, читая их газету о re2c.

2
ответ дан 17 December 2019 в 00:15
поделиться

Попробуйте BufferedReader и BufferedWriter для ускорения обработки.

0
ответ дан 17 December 2019 в 00:15
поделиться

Извините, если я не гуру.NET, но в C/C++, если у Вас есть хорошие большие буферы, необходимо смочь проанализировать его с синтаксическим анализатором LL1 не намного медленнее, чем можно просканировать байты. Я могу предоставить больше подробную информацию, если Вы хотите.

0
ответ дан 17 December 2019 в 00:15
поделиться

Буферные размеры по умолчанию, используемые StreamReader/FileStream, не могут быть оптимальными для рекордных длин в Ваших данных, таким образом, можно попытаться настроить их. Можно переопределить длины буфера по умолчанию в конструкторах и к FileStream и к StreamReader, который переносит его. Необходимо, вероятно, сделать их тем же размером.

0
ответ дан 17 December 2019 в 00:15
поделиться

Общие сведения:

  1. Высокопроизводительная потоковая передача не является сложной. Обычно необходимо изменять логику, которая использует переданные потоком данные; это сложно.

На самом деле, вот именно.

0
ответ дан 17 December 2019 в 00:15
поделиться
Другие вопросы по тегам:

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