Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Optymalizacja pamięci

Ostatnio zmodyfikowano 2019-08-22 23:10
Autor Wiadomość
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)
C/C++
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::filesystem::current_path();
    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";
    }
}
P-175084
pekfos
» 2019-08-22 06:59:20
Użyj wektora struktur zamiast wektora wektorów.
P-175085
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
P-175088
pekfos
» 2019-08-22 23:10:00
Jak rozumiem wciąż za dużo. Ile waży sam plik?
P-175089
« 1 »
  Strona 1 z 1