Алгоритмы таблицы плоских файлов фиксированной длины в переполнении стека

Я делаю простой проект для обработки таблиц с использованием плоских файлов в C ++. У меня есть два типа файлов для доступа к данным таблицы.
1) Индексный файл. (employee.idx)
2) Файл таблицы. (employee.tbl)

В индексном файле у меня есть детали таблицы в формате табуляции с разделителями. т.е.
Имя столбца Тип столбца Смещение столбца Размер столбца

например, employee.idx

ename string 0 10
eage number 10 2
ecity string 12 10

В табличном файле у меня есть данные в формате фиксированной длины.
например, employee.tbl

first     25Address0001
second    31Address0002

Здесь я объясню мой алгоритм, что я сделал в моей программе.

1) Сначала я загрузил данные индексного файла в 2D векторную строку (индексный вектор), используя fstream.

2) Это мой код для загрузки данных файла таблицы в 2D

while (fsMain)
{

if (!getline( fsMain, s )) break;

string s_str;

for(size_t i=0;i<idxTable.size();i++)

{
int fieldSize=stoi(idxTable[i].at(3));

string data (s,stoi(idxTable[i].at(2)),fieldSize);

string tmp=trim_right_inplace(data);

recordVec.push_back( tmp );

}

mainTable.push_back(record);recordVec.clear();

s="";
}

Хорошо. Теперь мой вопрос: «Есть ли другой способ загрузить данные фиксированной длины в память?». Я проверил этот процесс для 60 таблиц с 200 записями. Это займет около 20 секунд. Но я хочу загрузить 100 таблиц с 200 записями в течение одной секунды. Но это занимает больше времени. Как я могу улучшить эффективность для этой задачи?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]