Optymalizacja pamięci
Ostatnio zmodyfikowano 2019-08-22 23:10
Matix8981 Temat założony przez niniejszego użytkownika |
Optymalizacja pamięci » 2019-08-22 02:18:06 Witam, Napisałem bardzo prosty kod służący do odczytu pliku txt za pomocą ifstream a następnie rozłączanie linijek login:hasło do tablicy. Przy ok. 1 mln linijek użycie ramu to ok. 500-600mb, chciałbym to zoptymalizować ponieważ zapewne istnieją lepsze rozwiązania niż moje. (Użyłem Vector aby na sztywno nie przydzielać wielkości Arraya) vector < std::vector < std::string >> comboArray;
void tokenize( const std::string & s, const char delim, std::vector < std::string >& out ) { std::string::size_type beg = 0; for( auto end = 0;( end = s.find( delim, end ) ) != std::string::npos; ++end ) { out.push_back( s.substr( beg, end - beg ) ); beg = end + 1; } out.push_back( s.substr( beg ) ); }
void loadComboList() { std::ifstream comboFile( ".\\combo.txt", ifstream::in ); if( comboFile.is_open() ) { const char explode = ':'; string line; while( getline( comboFile, line ) ) { std::vector < std::string > ArrayAccount; tokenize( line, explode, ArrayAccount ); comboArray.push_back( ArrayAccount ); } } else { cout << "error"; } }
|
|
pekfos |
» 2019-08-22 06:59:20 Użyj wektora struktur zamiast wektora wektorów. |
|
Matix8981 Temat założony przez niniejszego użytkownika |
» 2019-08-22 23:01:27 Dzięki stworzeniu struct dla vectora zaoszczędzam średnio ~ 150MB pamięci |
|
pekfos |
» 2019-08-22 23:10:00 Jak rozumiem wciąż za dużo. Ile waży sam plik? |
|
« 1 » |