wie kann man das optimieren?



  • die referenzen sparen gut was ein,teilweise statt 4x aufrufen der funktionen mit dereferenzierungen nurnoch einmal^^



  • ...
            Desc& description=p->first;
            List& buffer_data=p->second;
            List& this_data=Tree.find(description)->second;
            Container::const_iterator& data_pos=Tree.find(description);
    ...
    

    Das ist nicht dein ernst.

    ...
            Desc& description=p->first;
            List& buffer_data=p->second;
            Container::const_iterator& data_pos=Tree.find(description);
            List& this_data=data_pos->second;
    ...
    

    Und schwups ist das ganze duetlich schneller.



  • Hi!

    otze schrieb:

    hmm da kamen wir fast aufs selbe ergebnis:

    void delete_similar(List& this_data,List& buffer_data){
        List::iterator this_iterator=this_data.begin();
        List::iterator buffer_iterator=buffer_data.begin();
    
        for(;buffer_iterator!=buffer_data.end();++buffer_iterator){
            while(this_iterator!=this_data.end()){
                if(*this_iterator!=*buffer_iterator)continue;
                this_data.erase(this_iterator);
                ++this_iterator;
            }
        }
    }
    

    Die while-Schleife landet bei continue in einer Endlosschleife. Denn wenn das continue ausgeführt wird, wird doch das ++this_iterator nicht mehr ausgeführt und somit wird die if-Abfrage immer mit true ausgewertet. Mit einer for-Schleife klappt das aber wunderbar, wodurch es dann mit dem continue funktioniert.

    for(;this_iterator!=this_data.end();++this_iterator){
                if(*this_iterator!=*buffer_iterator)continue;
                this_data.erase(this_iterator);
            }
    

    Code-Hacker



  • devil81 schrieb:

    Bringts denn was in der Performance ?

    Make it work, make it right, make it fast.



  • so, hoffe, alle beteiligten sind nun halbwegs mit dem ergebnis zufrieden, hab zuvor noch nie komplexere verschachtelungen programmiert, konnte also am anfang nicht ahnen, wie Krank das am ende werden würde...


Anmelden zum Antworten