Я делаю простой проект для обработки таблиц с использованием плоских файлов в 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 записями в течение одной секунды. Но это занимает больше времени. Как я могу улучшить эффективность для этой задачи?
Задача ещё не решена.