Я сделал этот метод для чтения из файла и поместил его в вектор строк;
std::vector<std::string> read_file_lines1(const char* filepath){
std::vector<std::string> file;
std::ifstream input(filepath);
Timer timer;
float time = 0;
std::string line;
int i = 0;
while (getline(input, line)){
timer.reset();
file.push_back(line);
time += timer.elapsed();
if (i == 10000)
std::cout << "10000 done" << std::endl;
i = ((i + 1) % 10001);
}
std::cout << time << std::endl;;
return file;
}
Но производительность, на мой взгляд, была очень плохой (200 тысяч строк за ~22 секунды).
с небольшим изменением, делающим его vector<string*>
(используя file.push_back(new std::string(line)) вызовы pushback увеличились с ~ 16 секунд до ~ 1,2 секунды, что было огромным улучшением (все еще отстает от моих целей), и у него есть небольшой Недостаток: использование памяти; если я хочу очистить память, используемую здесь, мне нужно будет не забыть сделать цикл для очистки каждой строки *
Теперь весь метод занимает 6 ~ секунд, ~ 5 из них в основном используются в строке в методе «getline», и мне очень хотелось бы знать, как его оптимизировать или сделать альтернативу.
PS: я делаю это, загружая 3D-модель, используя ту же модель в Java, требуется ~ 0,8 секунды, чтобы прочитать все И ФИЛЬТР (помещая «каждую строку в» массив вершин/текстур... и затем помещая их в индекс порядок), поэтому я очень разочарован, если мне потребуется столько времени, чтобы прочитать каждую строку из файла на С++ (используя режим отладки как в java/С++, что, вероятно, делает его довольно плохим тестом, но я все еще очень разочарован) ;