Alexander (HH): Mit welcher programmiersprache/technik werde ich hier schneller

Beitrag lesen

Moin Moin!

Um mal einen Zaunpfahl zu schwenken: In Baumstrukturen kann man nach Schlüssel-Werten dramatisch viel schneller suchen als in Listen.

Und noch eines:

  
                for(int i=0;i<Controller.stations.size();i++)  
                {  
                        if(Controller.stations.get(i).tripel.n && (Controller.stations.get(i).tripel.a!=-1 || Controller.stations.get(i).tripel.b!=-1))  
                                listNs.add(i);  
                        else if(!Controller.stations.get(i).tripel.n)  
                                listOhneNs.add(i);  
                }  

Du ruft hier Controller.stations.get(i) bis zu vier Mal pro Durchlauf auf, wo ein einziger Aufruf reichen würde:

  
                for(int i=0;i<Controller.stations.size();i++)  
                {  
                        Tripel t=Controller.stations.get(i).tripel;  
                        if(t.n && (t.a!=-1 || t.b!=-1))  
                                listNs.add(i);  
                        else if(!t.n)  
                                listOhneNs.add(i);  
                }  

Tadaa! 300.000.000 Aufruf von Controller.stations.get(i) eingespart, und nebenbei wird der Code auch noch kürzer und lesbarer.

Dann noch merken, dass das zweite if so nicht sein muß, und ein paar Klammern für die Lesbarkeit dazu:

  
                for(int i=0;i<Controller.stations.size();i++)  
                {  
                        Tripel t=Controller.stations.get(i).tripel;  
                        if (t.n) {  
                                if (t.a!=-1 || t.b!=-1) {  
                                    listNs.add(i);  
                                }  
                        } else {  
                                listOhneNs.add(i);  
                        }  
                }  

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".