2016-07-23 12 views
1

У меня есть проект в реальном времени, который имеет тяжелый процесс на каждой строке какого-либо текстового файла, что вы предлагаете для хранения этого текста?Является ли сохранение большого файла в массиве символов правильным?

Что я делаю сейчас, это сохранить весь текстовый файл в переменной char *, а затем работать с этой переменной вместо файла, моя проблема в том, когда текст становится больше, что я могу сделать? и есть возможность достичь ограничения массива символов, а куча памяти будет увеличиваться :(

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

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

+0

Вы не указали, какой RTOS используется (или ваш «в реальном времени» просто «должен быть быстрым»). Он может иметь файлы с отображением памяти. – KIIV

+0

@KIIV это должен быть быстрый вид :) –

+1

Это действительно зависит от ситуации или того, что это за файл. Если вы хотите реально повысить производительность и разрешить ситуацию, я бы предложил разбора файла раньше времени в более быструю внутреннюю структуру данных, а не как исходный текст. Если файл огромен до такой степени, что память будет ограничением, я бы предложил разбор его в базу данных с соответствующими индексами и работу с базой данных. В любом случае, я бы определенно предложил на данный момент использовать 'std :: vector ' или 'std :: string' вместо' char * ', если можно. Это, вероятно, сделает вашу жизнь немного легче в коротких и длинных тиражах. – Taywee

ответ

0

Если это действительно большой вопрос, почему вы хотите сохранить его в ОЗУ? Используйте файл с отображением карты памяти

+0

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

+3

Я бы переписал код, только если это необходимо. Если теперь, вы в порядке с хранением всего файла в ОЗУ, оставьте его как есть. Что вы имеете в виду? Не могли бы вы привести пример использования? – stryku