Seite 49 von 202 ErsteErste ... 394546474849505152535999149 ... LetzteLetzte
Ergebnis 721 bis 735 von 3026

Thema: [Programmiererstammtisch] "Zum ächzenden Compiler"

  1. #721
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Da kann man etwas optimieren. In der Zeile

    Code:
    if sum(v) + sum(m(:,1)) < H
    wird jedesmal die Summe von der ersten Spalte von m berechnet, die aber in der gesamten Schleife konstant ist.
    Ebenso kann man den Aufruf "sum(v)" vermeiden, indem man eine weitere Hilfsvariable einführt, die für die Summe von v steht.

    Habe das mal mit Python getestet, man spart bei 5 Kämpfen etwa 686400 Aufrufe an "sum" ein. Hat bei mir 1-2 Sekunden eingespart.
    Hier der Code:

    Code:
        v = zeros(L, int)
        v[0] = -1    
        m_sum = sum(m[:,0])
        v_sum = -1
        for i in range(nenner):
            v[0] += 1
            v_sum += 1
            for k in range(L):
                if v[k] > delta[k]:
                    v[k+1] += 1
                    v_sum = v_sum + 1 - v[k]
                    v[k] = 0
            
            if v_sum + m_sum < H:
                zaehler += 1
    Geändert von alpha civ (04. August 2015 um 15:23 Uhr)

  2. #722
    ❦ Ser Tira Tyrell ❦
    Registriert seit
    03.07.11
    Ort
    Westeros
    Beiträge
    18.958
    Das mit sum(m(:,1)) ist eine tolle Idee!
    Aber das mit v_sum verstehe ich nicht. Die Summe von Vektoreinträgen zu berechnen, sollte eigentlich nicht weiter optimierbar sein.
    Tritt dem REICH bei und werde Teil von etwas Großem!


    Achtung Spoiler:
    PHP-Code:
                    ....77$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..                   
                    ....
    DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD..                   
                    ..
    MM=:::::::::::::::::::::::::::::::::::~~=MM                   
                
    ... =+77~~~~~:::::::::::~::::::::::::~:::::~~~=II== . .             
               . . ,
    NM~:~~~~~::::::::,,::::::::~~::::,:::::~::~:~NM, .              
               .. .,
    MM~=~~:::::,::::::,:II~::::?I~,:::::::::~~~~~MM,...             
                   ,
    MM~~~~:::==~:::::,::==::,::==:,,::::::::::~:~MM, ..             
                .  ,
    MM:~:::::??=:::::::::::::,:::,,::::::::::::~:MM,     . . ....   
                .  ,
    MM:~::::::~,:::::::::::,:::DMMM?:::~I?:::::~:MM,.=MMMM.    . .  
                .  ,
    MM:~::,,:,:::::::::::::,+MNI++?ZND,,:::,:::~:MMNMZ+++?NM:. ...  
      ,  .. .    ..:
    MM:~::::::::::::::::::::=MM???+OMD::::::~::~~MMMMO????MM:   .   
      
    MMMMMMMMM  ..,MM:~::::::::::::::??::::=MM????++IMZ,::::::~~MMI??????MM:   .   
      
    MMOZZZZMM+?, ,MM:~::::::::::::::==:,::=MM???????OI???????IIZ$?++????MM:   .   
    MMZZ7I+Z7MMI?IMM:~:::::::~~~:::::,::::=MM????????I$$7$7$7$$+II?I????MM:   .   
     .
    MMMMO????MMMMMMM:~::,::::+I~:,::::::::=MM????????????????????++?II??MM:  ...  
    . . 
    MMMMD+II+ZMMMM:~::::::::~,::::::?7OMO??????+?+?????I?????????I???+?+DMM,.   
    ..  
    MMNMM?+??OMMMM:~::::~:::::::::,~??8MO???????????+?++?????++??+II????OMM ..  
    . .  .:
    NMMM??++IMM:~::+I?:::,:::::::,:ZM8=+I???: ,MO?+?????????, ~MM?I??OMM .   
      ...   .
    MMMMMMNMM:~::::::::::,::::::,$MO+??+??ZMMMO?+??I+?MN+?NMNMM+???OMM.    
      ...  ..??
    I?ZMMMM:~:::::,:::::~~=::::ZMO+?++++IOZO7????+??ZZ?+ZZZZZ++++OMM...  
      ....  .... 
    IMMMM:~::::,::::::=I?~:::$MO+?==~=+???????+???????+??+?====ZMM...  
               . . :
    MM~~~~:::?I~::::::,:::$MO?I~====?IMO????7MN????DMO??====ZMM...  
                  ..
    MM~~~::::==::::::::::,=?I$Z+++++?IMDZZZ$OMMZZZZNMO?+++$$+?+...  
                   :
    MM~~~~=~::::::::::::::::+MM???????MMMMMMMMMMMMMMMOI??+MM~. ...  
                 
    7MMMMMM=~:~~~~~~~~~~~~~~~~:~::NMI+??????????++?+?++???+MM........  
               ::?
    8O8OOO?==+++++==++++=+++??+==NM7II$I7I7I7II7II77III7I7$$ .        
               
    MM$+I???+MMMMMMMMMMMMMNMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMM. ..        
               
    NN7++??MMMM?.,MM7?+?7MM....... ...MM7++?IMM, +MM+???8MI..  ..        
               
    MMZ777$NMII~ .MMZ$7$7I+, . .     .?7I$77OMM..:I?7$$$I?=.             
               
    NMMMMMMMM. ..:MMMMMMI   . .      ,. IMMMMMM~ ,..MMMM: ,. 

  3. #723
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Weil sich v nicht immer überall ändert. Meistens ändert sich nur v(0). Daher müssen die restlichen Einträge nicht immer aufsummiert werden.

  4. #724
    ❦ Ser Tira Tyrell ❦
    Registriert seit
    03.07.11
    Ort
    Westeros
    Beiträge
    18.958
    Achso!
    Tritt dem REICH bei und werde Teil von etwas Großem!


    Achtung Spoiler:
    PHP-Code:
                    ....77$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..                   
                    ....
    DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD..                   
                    ..
    MM=:::::::::::::::::::::::::::::::::::~~=MM                   
                
    ... =+77~~~~~:::::::::::~::::::::::::~:::::~~~=II== . .             
               . . ,
    NM~:~~~~~::::::::,,::::::::~~::::,:::::~::~:~NM, .              
               .. .,
    MM~=~~:::::,::::::,:II~::::?I~,:::::::::~~~~~MM,...             
                   ,
    MM~~~~:::==~:::::,::==::,::==:,,::::::::::~:~MM, ..             
                .  ,
    MM:~:::::??=:::::::::::::,:::,,::::::::::::~:MM,     . . ....   
                .  ,
    MM:~::::::~,:::::::::::,:::DMMM?:::~I?:::::~:MM,.=MMMM.    . .  
                .  ,
    MM:~::,,:,:::::::::::::,+MNI++?ZND,,:::,:::~:MMNMZ+++?NM:. ...  
      ,  .. .    ..:
    MM:~::::::::::::::::::::=MM???+OMD::::::~::~~MMMMO????MM:   .   
      
    MMMMMMMMM  ..,MM:~::::::::::::::??::::=MM????++IMZ,::::::~~MMI??????MM:   .   
      
    MMOZZZZMM+?, ,MM:~::::::::::::::==:,::=MM???????OI???????IIZ$?++????MM:   .   
    MMZZ7I+Z7MMI?IMM:~:::::::~~~:::::,::::=MM????????I$$7$7$7$$+II?I????MM:   .   
     .
    MMMMO????MMMMMMM:~::,::::+I~:,::::::::=MM????????????????????++?II??MM:  ...  
    . . 
    MMMMD+II+ZMMMM:~::::::::~,::::::?7OMO??????+?+?????I?????????I???+?+DMM,.   
    ..  
    MMNMM?+??OMMMM:~::::~:::::::::,~??8MO???????????+?++?????++??+II????OMM ..  
    . .  .:
    NMMM??++IMM:~::+I?:::,:::::::,:ZM8=+I???: ,MO?+?????????, ~MM?I??OMM .   
      ...   .
    MMMMMMNMM:~::::::::::,::::::,$MO+??+??ZMMMO?+??I+?MN+?NMNMM+???OMM.    
      ...  ..??
    I?ZMMMM:~:::::,:::::~~=::::ZMO+?++++IOZO7????+??ZZ?+ZZZZZ++++OMM...  
      ....  .... 
    IMMMM:~::::,::::::=I?~:::$MO+?==~=+???????+???????+??+?====ZMM...  
               . . :
    MM~~~~:::?I~::::::,:::$MO?I~====?IMO????7MN????DMO??====ZMM...  
                  ..
    MM~~~::::==::::::::::,=?I$Z+++++?IMDZZZ$OMMZZZZNMO?+++$$+?+...  
                   :
    MM~~~~=~::::::::::::::::+MM???????MMMMMMMMMMMMMMMOI??+MM~. ...  
                 
    7MMMMMM=~:~~~~~~~~~~~~~~~~:~::NMI+??????????++?+?++???+MM........  
               ::?
    8O8OOO?==+++++==++++=+++??+==NM7II$I7I7I7II7II77III7I7$$ .        
               
    MM$+I???+MMMMMMMMMMMMMNMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMM. ..        
               
    NN7++??MMMM?.,MM7?+?7MM....... ...MM7++?IMM, +MM+???8MI..  ..        
               
    MMZ777$NMII~ .MMZ$7$7I+, . .     .?7I$77OMM..:I?7$$$I?=.             
               
    NMMMMMMMM. ..:MMMMMMI   . .      ,. IMMMMMM~ ,..MMMM: ,. 

  5. #725
    ❦ Ser Tira Tyrell ❦
    Registriert seit
    03.07.11
    Ort
    Westeros
    Beiträge
    18.958
    Die Rechengeschwindigkeit hat sich exrem verkürzt! Jetzt gehen sogar die 7 Kämpfe von vorhin in nur 6 Sekunden.
    Tritt dem REICH bei und werde Teil von etwas Großem!


    Achtung Spoiler:
    PHP-Code:
                    ....77$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..                   
                    ....
    DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD..                   
                    ..
    MM=:::::::::::::::::::::::::::::::::::~~=MM                   
                
    ... =+77~~~~~:::::::::::~::::::::::::~:::::~~~=II== . .             
               . . ,
    NM~:~~~~~::::::::,,::::::::~~::::,:::::~::~:~NM, .              
               .. .,
    MM~=~~:::::,::::::,:II~::::?I~,:::::::::~~~~~MM,...             
                   ,
    MM~~~~:::==~:::::,::==::,::==:,,::::::::::~:~MM, ..             
                .  ,
    MM:~:::::??=:::::::::::::,:::,,::::::::::::~:MM,     . . ....   
                .  ,
    MM:~::::::~,:::::::::::,:::DMMM?:::~I?:::::~:MM,.=MMMM.    . .  
                .  ,
    MM:~::,,:,:::::::::::::,+MNI++?ZND,,:::,:::~:MMNMZ+++?NM:. ...  
      ,  .. .    ..:
    MM:~::::::::::::::::::::=MM???+OMD::::::~::~~MMMMO????MM:   .   
      
    MMMMMMMMM  ..,MM:~::::::::::::::??::::=MM????++IMZ,::::::~~MMI??????MM:   .   
      
    MMOZZZZMM+?, ,MM:~::::::::::::::==:,::=MM???????OI???????IIZ$?++????MM:   .   
    MMZZ7I+Z7MMI?IMM:~:::::::~~~:::::,::::=MM????????I$$7$7$7$$+II?I????MM:   .   
     .
    MMMMO????MMMMMMM:~::,::::+I~:,::::::::=MM????????????????????++?II??MM:  ...  
    . . 
    MMMMD+II+ZMMMM:~::::::::~,::::::?7OMO??????+?+?????I?????????I???+?+DMM,.   
    ..  
    MMNMM?+??OMMMM:~::::~:::::::::,~??8MO???????????+?++?????++??+II????OMM ..  
    . .  .:
    NMMM??++IMM:~::+I?:::,:::::::,:ZM8=+I???: ,MO?+?????????, ~MM?I??OMM .   
      ...   .
    MMMMMMNMM:~::::::::::,::::::,$MO+??+??ZMMMO?+??I+?MN+?NMNMM+???OMM.    
      ...  ..??
    I?ZMMMM:~:::::,:::::~~=::::ZMO+?++++IOZO7????+??ZZ?+ZZZZZ++++OMM...  
      ....  .... 
    IMMMM:~::::,::::::=I?~:::$MO+?==~=+???????+???????+??+?====ZMM...  
               . . :
    MM~~~~:::?I~::::::,:::$MO?I~====?IMO????7MN????DMO??====ZMM...  
                  ..
    MM~~~::::==::::::::::,=?I$Z+++++?IMDZZZ$OMMZZZZNMO?+++$$+?+...  
                   :
    MM~~~~=~::::::::::::::::+MM???????MMMMMMMMMMMMMMMOI??+MM~. ...  
                 
    7MMMMMM=~:~~~~~~~~~~~~~~~~:~::NMI+??????????++?+?++???+MM........  
               ::?
    8O8OOO?==+++++==++++=+++??+==NM7II$I7I7I7II7II77III7I7$$ .        
               
    MM$+I???+MMMMMMMMMMMMMNMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMM. ..        
               
    NN7++??MMMM?.,MM7?+?7MM....... ...MM7++?IMM, +MM+???8MI..  ..        
               
    MMZ777$NMII~ .MMZ$7$7I+, . .     .?7I$77OMM..:I?7$$$I?=.             
               
    NMMMMMMMM. ..:MMMMMMI   . .      ,. IMMMMMM~ ,..MMMM: ,. 

  6. #726
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Du solltest unbedingt einen Test hinzufügen, ob die Summe der minimalen Schäden größer oder gleich der Trefferpunkte ist. Weil dann ist die Wahrscheinlichkeit von vorne rein 0 und man braucht nicht in die Schleife zu gehen.

  7. #727
    ❦ Ser Tira Tyrell ❦
    Registriert seit
    03.07.11
    Ort
    Westeros
    Beiträge
    18.958
    Das hatte ich sogar mal vor, war aber zu faul dazu.
    Tritt dem REICH bei und werde Teil von etwas Großem!


    Achtung Spoiler:
    PHP-Code:
                    ....77$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..                   
                    ....
    DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD..                   
                    ..
    MM=:::::::::::::::::::::::::::::::::::~~=MM                   
                
    ... =+77~~~~~:::::::::::~::::::::::::~:::::~~~=II== . .             
               . . ,
    NM~:~~~~~::::::::,,::::::::~~::::,:::::~::~:~NM, .              
               .. .,
    MM~=~~:::::,::::::,:II~::::?I~,:::::::::~~~~~MM,...             
                   ,
    MM~~~~:::==~:::::,::==::,::==:,,::::::::::~:~MM, ..             
                .  ,
    MM:~:::::??=:::::::::::::,:::,,::::::::::::~:MM,     . . ....   
                .  ,
    MM:~::::::~,:::::::::::,:::DMMM?:::~I?:::::~:MM,.=MMMM.    . .  
                .  ,
    MM:~::,,:,:::::::::::::,+MNI++?ZND,,:::,:::~:MMNMZ+++?NM:. ...  
      ,  .. .    ..:
    MM:~::::::::::::::::::::=MM???+OMD::::::~::~~MMMMO????MM:   .   
      
    MMMMMMMMM  ..,MM:~::::::::::::::??::::=MM????++IMZ,::::::~~MMI??????MM:   .   
      
    MMOZZZZMM+?, ,MM:~::::::::::::::==:,::=MM???????OI???????IIZ$?++????MM:   .   
    MMZZ7I+Z7MMI?IMM:~:::::::~~~:::::,::::=MM????????I$$7$7$7$$+II?I????MM:   .   
     .
    MMMMO????MMMMMMM:~::,::::+I~:,::::::::=MM????????????????????++?II??MM:  ...  
    . . 
    MMMMD+II+ZMMMM:~::::::::~,::::::?7OMO??????+?+?????I?????????I???+?+DMM,.   
    ..  
    MMNMM?+??OMMMM:~::::~:::::::::,~??8MO???????????+?++?????++??+II????OMM ..  
    . .  .:
    NMMM??++IMM:~::+I?:::,:::::::,:ZM8=+I???: ,MO?+?????????, ~MM?I??OMM .   
      ...   .
    MMMMMMNMM:~::::::::::,::::::,$MO+??+??ZMMMO?+??I+?MN+?NMNMM+???OMM.    
      ...  ..??
    I?ZMMMM:~:::::,:::::~~=::::ZMO+?++++IOZO7????+??ZZ?+ZZZZZ++++OMM...  
      ....  .... 
    IMMMM:~::::,::::::=I?~:::$MO+?==~=+???????+???????+??+?====ZMM...  
               . . :
    MM~~~~:::?I~::::::,:::$MO?I~====?IMO????7MN????DMO??====ZMM...  
                  ..
    MM~~~::::==::::::::::,=?I$Z+++++?IMDZZZ$OMMZZZZNMO?+++$$+?+...  
                   :
    MM~~~~=~::::::::::::::::+MM???????MMMMMMMMMMMMMMMOI??+MM~. ...  
                 
    7MMMMMM=~:~~~~~~~~~~~~~~~~:~::NMI+??????????++?+?++???+MM........  
               ::?
    8O8OOO?==+++++==++++=+++??+==NM7II$I7I7I7II7II77III7I7$$ .        
               
    MM$+I???+MMMMMMMMMMMMMNMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMM. ..        
               
    NN7++??MMMM?.,MM7?+?7MM....... ...MM7++?IMM, +MM+???8MI..  ..        
               
    MMZ777$NMII~ .MMZ$7$7I+, . .     .?7I$77OMM..:I?7$$$I?=.             
               
    NMMMMMMMM. ..:MMMMMMI   . .      ,. IMMMMMM~ ,..MMMM: ,. 

  8. #728
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Bezüglich des maximalen Schaddens kann man gebauso vorgehen. Ist der kleiner als die TP, dann ist die Wahrscheinlichkeit 100%.

  9. #729
    ❦ Ser Tira Tyrell ❦
    Registriert seit
    03.07.11
    Ort
    Westeros
    Beiträge
    18.958
    Nochmals Danke! Jetzt kann ich auch viele Flugzeugattacken berechnen.
    Tritt dem REICH bei und werde Teil von etwas Großem!


    Achtung Spoiler:
    PHP-Code:
                    ....77$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..                   
                    ....
    DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD..                   
                    ..
    MM=:::::::::::::::::::::::::::::::::::~~=MM                   
                
    ... =+77~~~~~:::::::::::~::::::::::::~:::::~~~=II== . .             
               . . ,
    NM~:~~~~~::::::::,,::::::::~~::::,:::::~::~:~NM, .              
               .. .,
    MM~=~~:::::,::::::,:II~::::?I~,:::::::::~~~~~MM,...             
                   ,
    MM~~~~:::==~:::::,::==::,::==:,,::::::::::~:~MM, ..             
                .  ,
    MM:~:::::??=:::::::::::::,:::,,::::::::::::~:MM,     . . ....   
                .  ,
    MM:~::::::~,:::::::::::,:::DMMM?:::~I?:::::~:MM,.=MMMM.    . .  
                .  ,
    MM:~::,,:,:::::::::::::,+MNI++?ZND,,:::,:::~:MMNMZ+++?NM:. ...  
      ,  .. .    ..:
    MM:~::::::::::::::::::::=MM???+OMD::::::~::~~MMMMO????MM:   .   
      
    MMMMMMMMM  ..,MM:~::::::::::::::??::::=MM????++IMZ,::::::~~MMI??????MM:   .   
      
    MMOZZZZMM+?, ,MM:~::::::::::::::==:,::=MM???????OI???????IIZ$?++????MM:   .   
    MMZZ7I+Z7MMI?IMM:~:::::::~~~:::::,::::=MM????????I$$7$7$7$$+II?I????MM:   .   
     .
    MMMMO????MMMMMMM:~::,::::+I~:,::::::::=MM????????????????????++?II??MM:  ...  
    . . 
    MMMMD+II+ZMMMM:~::::::::~,::::::?7OMO??????+?+?????I?????????I???+?+DMM,.   
    ..  
    MMNMM?+??OMMMM:~::::~:::::::::,~??8MO???????????+?++?????++??+II????OMM ..  
    . .  .:
    NMMM??++IMM:~::+I?:::,:::::::,:ZM8=+I???: ,MO?+?????????, ~MM?I??OMM .   
      ...   .
    MMMMMMNMM:~::::::::::,::::::,$MO+??+??ZMMMO?+??I+?MN+?NMNMM+???OMM.    
      ...  ..??
    I?ZMMMM:~:::::,:::::~~=::::ZMO+?++++IOZO7????+??ZZ?+ZZZZZ++++OMM...  
      ....  .... 
    IMMMM:~::::,::::::=I?~:::$MO+?==~=+???????+???????+??+?====ZMM...  
               . . :
    MM~~~~:::?I~::::::,:::$MO?I~====?IMO????7MN????DMO??====ZMM...  
                  ..
    MM~~~::::==::::::::::,=?I$Z+++++?IMDZZZ$OMMZZZZNMO?+++$$+?+...  
                   :
    MM~~~~=~::::::::::::::::+MM???????MMMMMMMMMMMMMMMOI??+MM~. ...  
                 
    7MMMMMM=~:~~~~~~~~~~~~~~~~:~::NMI+??????????++?+?++???+MM........  
               ::?
    8O8OOO?==+++++==++++=+++??+==NM7II$I7I7I7II7II77III7I7$$ .        
               
    MM$+I???+MMMMMMMMMMMMMNMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMM. ..        
               
    NN7++??MMMM?.,MM7?+?7MM....... ...MM7++?IMM, +MM+???8MI..  ..        
               
    MMZ777$NMII~ .MMZ$7$7I+, . .     .?7I$77OMM..:I?7$$$I?=.             
               
    NMMMMMMMM. ..:MMMMMMI   . .      ,. IMMMMMM~ ,..MMMM: ,. 

  10. #730
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    "Echte Funktionen" verändern während der Laufzeit für die gleichen Parameter nie die Ausgabe und haben auch neben der Ausgabe keine weiteren Seiteneffekte. So weit die Basics. Gehen wir mal von einer sehr kurzen Antwort für eine längere Berechnung aus.
    Eigentlich müsste man die Funktionen nur ein einziges mal Auswerten und kann dann alle weiteren Funktionsaufrufe (an dieser Stelle des Codes) durch die Übergabe des Resultates ersetzen. (D.h. der Code wird an der Stelle direkt geändert! ).

    Gibt es in Python eine elegante Möglichkeit um dies zu realisieren?! Ein „normaler“ Dekorator kann es nicht wirklich sein, weil jeder Funktionsaufruf separat (in Abhängigkeit der Argumente) behandelt werden muss.
    Beispiel wären im Civ4-Code alle Aufrufe von gc.getInfoTypeForString("KEY"). Nun gut, die Funktion nutzt intern eine Hashmap und man spart nicht so viel (die ganzen String-Kopieroperationen beim Python/C++-Übergang und das Hashen sollten weg fallen), aber etwas sollte das doch bringen?!

  11. #731
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.906
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    "Echte Funktionen" verändern während der Laufzeit für die gleichen Parameter nie die Ausgabe und haben auch neben der Ausgabe keine weiteren Seiteneffekte. So weit die Basics. Gehen wir mal von einer sehr kurzen Antwort für eine längere Berechnung aus.
    Eigentlich müsste man die Funktionen nur ein einziges mal Auswerten und kann dann alle weiteren Funktionsaufrufe (an dieser Stelle des Codes) durch die Übergabe des Resultates ersetzen. (D.h. der Code wird an der Stelle direkt geändert! ).

    Gibt es in Python eine elegante Möglichkeit um dies zu realisieren?! Ein „normaler“ Dekorator kann es nicht wirklich sein, weil jeder Funktionsaufruf separat (in Abhängigkeit der Argumente) behandelt werden muss.
    Beispiel wären im Civ4-Code alle Aufrufe von gc.getInfoTypeForString("KEY"). Nun gut, die Funktion nutzt intern eine Hashmap und man spart nicht so viel (die ganzen String-Kopieroperationen beim Python/C++-Übergang und das Hashen sollten weg fallen), aber etwas sollte das doch bringen?!
    Ja gibts (als decorator), https://docs.python.org/dev/library/...ools.lru_cache

    Nur um mal bisschen zu nitpicken. Echte "Funktionen" haben keine Seiteneffekte, keine Ausgabe, sondern nur einen Rueckgabewert .

    Aber der Cache muss sicher auch die Inputs hashen...

  12. #732
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ja, lru_cache hatte ich auch schon gesehen, aber du liegst mit deiner Vermutung richtig.
    Ja, ich probiere mal mit einer billigen statischen Codeanalyse und ersetze
    val = f() durch
    valCache = valCache if valCache else ()
    val = valCache

    wobei valCache ne globale Konstante ist.
    Nicht sehr schön, so ein globales Geschwür, aber müsste fixer sein.

  13. #733
    Say My Name Avatar von Zulan
    Registriert seit
    13.03.08
    Beiträge
    8.906
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Ja, lru_cache hatte ich auch schon gesehen, aber du liegst mit deiner Vermutung richtig.
    Ja, ich probiere mal mit einer billigen statischen Codeanalyse und ersetze
    val = f() durch
    valCache = valCache if valCache else ()
    val = valCache

    wobei valCache ne globale Konstante ist.
    Nicht sehr schön, so ein globales Geschwür, aber müsste fixer sein.
    Ich wuerde jetzt mal meinen ueblichen Spruch bringen: Erst performanceanalyse, dann Optimierung. Muss ein komischer code sein der davon profitiert.

    wenn du natuerlich

    Code:
    for x in ganz_viele_elemente:
        val = f()
        x.dosomething(val)
    hast, dann machste keine globalen foo, sondern schiebst das val = f() aus der Schleife raus

  14. #734
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Die Captchas auf https://www.secure.denic.de/webwhois/ sind absolut unlösbar

  15. #735
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Aha, mit aktiviertem Javascript sind sie einfacher
    Ist der Domaininhaber von schachtelsatz.de hier ein User? Dessen Domain verlinkt aufs Forum und wird bei Suchanfragen deswegen auch gefunden.

Seite 49 von 202 ErsteErste ... 394546474849505152535999149 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •