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 » |