Szybkie wczytywanie plików txt C++

0

Witam! Jaki sposób będzie najszybszy do wczytania dużego pliku txt? Gdzie mogę znaleźć o tym informacje ? Pozdrawiam!

2

sposobów jest wiele, pytanie co chcesz osiągnąć.

1

Pytanie jak duży to plik?
A) do 4 MB?
B) do 4 GB?
C) do 4 TB?
D) większy?

3

Najprostszy sposób na wczytanie pliku w całości, który również ma niezłą wydajność (o ile masz dość ramu i faktycznie potrzebujesz cały plik w pamięci):

std::string read_file(std::string_view name) {
    std::ifstream f(name);
    std::stringstream s;
    s << f.rdbuf();
    return s.str();
}

Ewentualnie pobawiłbym się w mmap lub odpowiedniki.

Ale tak jak powiedzieli przedmówcy: pierw odpowiedz na pytanie co chcesz zrobić i zdefiniuj pojęcia (np. duży), bo pewnie znów jest XY.

0

załóż sobie trial o'reily
tu masz cały rozdział o tym
https://www.oreilly.com/library/view/optimized-c/9781491922057/

Książka bardzo ale to bardzo średnia. Ale coś tam o tym jest.

0

@vpiotr: Nie doprecyzowałem pytania :D rozmiar to około 10 MB

0
rolniczy napisał(a):

@vpiotr: Nie doprecyzowałem pytania :D rozmiar to około 10 MB

10 MB to prawie nic. Nawet na starym HDD wczytanie tego to mrugnięcie okiem.
Jesteś pewien, że wąskim gardłem twojego kodu jest wyczytanie danych? Zrobiłeś profilowanie?
No chyba, że tych plików jest bardzo dużo i są kolejno przetwarzane.

2
MarekR22 napisał(a):
rolniczy napisał(a):

@vpiotr: Nie doprecyzowałem pytania :D rozmiar to około 10 MB

10 MB to prawie nic.
Jesteś pewien, że wąskim gardłem twojego kodu jest wyczytanie danych? Zrobiłeś profilowanie?

Dodatkowo brakuje jasnego spojrzenia, co z tym WCZYTANYM plikiem ma się dziać, jakie będą dalsze losy tych danych (zgaduję, że WCZYTANIE jest tylko środkiem ku czemuś)
Bo od tego dużo zależy. Np wczytanie sekwencji literek gdy chodzi o dostęp swobodny, byłoby fatalnym założeniem

1 użytkowników online, w tym zalogowanych: 0, gości: 1