Was ist für euch guter Programmcode?
-
Optimizer schrieb:
Worauf wartest du genau? Mir fällt kein Szenario ein, indem final ein Hinweis für den JIT-Compiler sein könnte, eine Methode nicht virtuell aufzurufen. Er kennt alle geladenen Klassen (weiß also welche Methode bis zu welcher Ableitung redefiniert wird), den Referenztyp und weiß daher IMHO genau, ob es klar ist, welche Methode das ist, oder nicht. Könnte ein final irgendwo noch ein Mehr an Informationen bringen?
Vielleicht könnte es javac noch mehr Informationen bringen. Momentan optimiert der ja AFAIK gar nicht, aber vielleicht entschließen die sich irgendwann wieder dazu, javac statische Optimierungen machen zu lassen. Da könnte ein final dann durchaus eine hilfreiche Information sein. ...IMHO, habe mir da allerdings keine tiefergehenden Gedanken gemacht.
-
Gregor@Home schrieb:
naja, aber wie du schon sagst: Ich warte mal 4 Jahre, vielleicht nutzt das der Jitter oder der Bytecode-Compiler ja irgendwann mal.
jo, wart mal.
ich glaube fest daran, daß es theoretische gründe gibt, weshalb java schnelleren code generieren kann als c++.
so, wie ich ich immer dran glaubte, daß in c++ cout theoretsch schneller als printf ist. ka, wie weit der nachweis gediegen ist. aber zur not, werde ich das selber schaffen.
irgendwann wird java-compilat schneller als c++-coimpilar rennen und dann wird der gcc bald ne option -fno_reinterpretcast anbieten und noch allerlei. es wird c++-nach-java-compiler geben. und ich werde feststellen, daß ich mehrfache erblichkeit in 1000 klassen nur einmal brauche und mit zei ifs an performance-unkritischen stellen krieg ich die auch weg.
-
volkard schrieb:
und ich werde feststellen, daß ich mehrfache erblichkeit in 1000 klassen nur einmal brauche und mit zei ifs an performance-unkritischen stellen krieg ich die auch weg.
Hmmm. Ich weiß gerade nicht, was Mehrfachvererbung mit zig ifs zu tun hat. Aber ich nutze in Java IMHO eigentlich relativ wenig ifs und auch wenig switch, weil bei mir eigentlich nahezu alles durch so eine Art Funktionsobjekt repräsentiert wird. Ich nutze also Polymorphie und "konfiguriere" Algorithmen usw. eher, als dass ich in Algorithmen mit lauter ifs auf irgendwelche Dinge anders reagiere. Stattdessen tausche ich einfach diese "Funktionsobjekte" aus.
Ist das eigentlich eine übliche Technik, um die ganzen ifs zu beseitigen? Ich habe bei mir festgestellt, dass die ifs immer zu Code führen, der sich bei wachsendem Programm lokal vergrößert. Aus 3 ifs werden dann plötzlich 5, 7, 10 oder was weiß ich wie viele. Ich habe das eigentlich noch nie so konsequent in anderem Code gesehen, wie ich es durchziehe. Andererseits gucke ich mir kaum anderen Code an und eine if-Orgie fällt eher auf als keine.
-
http schrieb:
lol. die http request parse funktion ist dort ja noch länger. 739 zeilen. das kann doch echt nicht wahr sein.
Alles eine Sache der Erfahrung. Für Power Off z.B. ist dieser Code ziemlich trivial.
-
trivial- schrieb:
Alles eine Sache der Erfahrung. Für Power Off z.B. ist dieser Code ziemlich trivial.
Stimmt. Nix besonderes. Besteht eh hauptsaechlich aus Log-Aufrufen.
-
Gregor@Home schrieb:
volkard schrieb:
und ich werde feststellen, daß ich mehrfache erblichkeit in 1000 klassen nur einmal brauche und mit zei ifs an performance-unkritischen stellen krieg ich die auch weg.
Hmmm. Ich weiß gerade nicht, was Mehrfachvererbung mit zig ifs zu tun hat.
ich füchte, ich meinte mit "zei" eher "zwei" als "zig".
-
-
holy wtf schrieb:
den find ich nice
http://www.rafb.net/paste/results/QUKLrK92.html
1889 Zeilen, eine Funktion.
LOL, hauptsache erstmal 100 Zeilen ASCII-Diagramme im Code einbauen...
-
LOL
-
besserwisser schrieb:
int main() { loese_die_problemstellung(); return 0; }
Das perfekte Programm imo. Sorry für's Ausgraben dieses alten Urthreads, aber wenn ein Programm einmal bei mir jemals so aussehen sollte, hab ich modulare, objektorientierte, prozedurale und generische Programmierung endgültig verstanden. Hammer! Wie schreibt man solche Funktionen?