![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #41 (permalink) | ||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|||||||||||||||
|
|
|
|||||||||||||||
| #42 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 01.11.2008
Beiträge: 520
Abgegebene Danke: 1
Erhielt 16 Danke für 16 Beiträge
|
Da gibte aber gute Beispiele, speziell bei Spielen. (oder String concats, das wird nämlich nicht immer optimiert durch stringbuilder.(wer näheres lesen will guckt in meiner History zu Download von Websites/Performanceproblemen))
Hängt halt davon ab wie oft die Methode aufgerufen wird.(Gutes Beispiel hier sind Boardphase Algorithmen von Jbullet Man brach nur collisionen berechnen wenn Objekte sich überhaupt berühren können,dies lässt sich einfach optimieren Bsp: a und b sind 10 meter groß, wenn ich a nicht berühre und es 10 meter wech ist, brauche ich b garnicht testen was 100 meter weit wech ist. Wobei ich zu den Personen gehöre, die sich als erstes ein Konzept überlegen das alles Möglichst einfach umsetzen kann was benötigt wird, und erst dann anfange zu Programmieren. Der Wechsel eines Algorithmuses erweißt sich oft als ein paar hundertmal größer als die optimierung des bereits vorhandenen. Geändert von Empire Phoenix (18.03.2010 um 09:35 Uhr) |
|
|
|
| #43 (permalink) | |||||||||||||||||||||||||||||||||||||
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Beiträge: 7.431
Blog-Einträge: 7
Abgegebene Danke: 16
Erhielt 33 Danke für 31 Beiträge
|
es geht in keiner weise darum dass man sich nicht damit beschaeftigen soll, es geht darum, dass im Namen der Performance meist ein schlechter Code entsteht. Dass performanceoptimierungen angegangen werden, obwohl nicht mal gezeigt wurde dass Performanceprobleme existieren. Keiner verteufelt das Beschaeftigen mit Performance oder das Wissen wie man Performance testet. Das einsetzen von Performanceoptimierung ist aber nun mal in den meisten Faellen a) gar nicht relevant und b) fuehrt zu schlimmeren Ergebnissen.
__________________
Test Driven Development is like sex. If you dont like it, you probably aint doing it right ! Proleptic programming is like driving 15 on the freeway because you will exit once and pass a school area ! Geändert von bygones (18.03.2010 um 09:42 Uhr) |
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
| #44 (permalink) | |||||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 13.09.2007
Beiträge: 8.314
Abgegebene Danke: 6
Erhielt 134 Danke für 132 Beiträge
|
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #45 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
Das man in Stellen die nur einmal durchlaufen werden keinen StringBuilder braucht um zwei Strings zu konkatenieren hat hier auch keiner gesagt. Der Grundtenor meiner Einstellung ist einfach die, das ich mir erst einen performanten Algorithmus überlege, statt einfach drauf los zu programmieren und dann mal hoffe, das HotSpot oder javac für mich alles machen werden. Das sollte eigentlich auch im Interese eines jeden Entwicklers sein.
Das der überlegte performante Algorithmus schlechter wartbar sein soll, liegt dann wohl eher an schlechter Programmierung. Warum sollte ich z.B. in einer bestimmten Schleife unnötige Objekte erzeugen, wenn ich vorher erkennen kann, das z.B. eine Erzeugung reicht, oder es sogar vielleicht, mit vorheriger Überlegung, ganz anders möglich wäre. @Dude123 Poste doch mal deinen Algorithmus. Vielleicht kannst Du durch eine höhere Auslastung, indem Du mehrere Objekte verarbeitest, aussagekräftigere Zeiten gewinnen.
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|
|
|
| #46 (permalink) | |||||||||||||||||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
![]()
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||
| #47 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Wie gerechtfertigt die Frage nach einer möglichen Optimierung ist, kann man bisher IMHO nicht beantworten. Es ging ja nur darum, dass eine "Verbesserung" gemessen werden sollte. Und diese Verbesserung sollte an etwas gemacht werden, was weniger als 10ms braucht. Man könnte jetzt sagen, dass es keinen Sinn macht, so etwas zu optimieren. Aber wenn man mal absurderweise die Möglichkeit in den Raum stellt, dass der Threadersteller nicht komplett blöd ist, geht es vermutlich NICHT darum, dafür zu sorgen, dass nach einem Buttonklick ein Ergebnis nach 0.2ms statt nach 0.5ms erscheint, sondern darum, dass dieser zu optimierende Teil so oft ausgeführt wird, dass (obwohl er nur 0.5ms braucht) "die meiste Zeit" in diesem Teil verbraten wird, und dadurch z.B. Wartezeiten im Sekundenbereich entstehen, die man minimieren will.
Jetzt könnte man versuchen, EINEN Durchlauf zu messen, und schauen, ob er nach der Optimierung 0.3ms weniger braucht. Aber die Hinweise auf JIT, Microbenchmarks & Co bezogen sich ja darauf, dass das praktisch keinen Sinn macht, und es besser wäre, zu testen, ob durch die Optimierung die tatsächliche Wartezeit z.B. von 5 Sekunden auf 2 Sekunden reduziert wird. Das KANN dann mit einem geeigneten Microbenchmark abgeschätzt werden. Und deswegen auch der Link. Und wenn man glaubt, man müsse mit Kritik an Angelika Langer nicht so zurückhaltend sein, dann sollte man sich mal ihre Seite etwas genauer ansehen. Die weiß schon, wovon sie redet. Kritisieren und in Frage stellen kann man das natürlich trotzdem, aber man läuft Gefahr, damit nicht ernst genommen zu werden
|
|
|
|
| #48 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 23.02.2008
Beiträge: 287
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Ob ich nun ein Bubblesort oder Quicksort verwende, ist eine grundsätzlich Designentscheidung. Wenn der Quicksort nicht perfekt implementiert ist, bleibt die Komplexität davon trotzdem unberührt und selbst ein optimal implementierter Bubblesort wird die Performance nur verschlechtern können. Darum reden hier soviele von Mikrooptimierungen und halten sie für nahezu überflüssig - was sie in fast allen Fällen auch sind. |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #49 (permalink) | ||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|||||||||||||||
|
|
|
|||||||||||||||
| #50 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
@Janus sry, das war ein wenig unglücklich ausgedrückt von mir. Das Beispiel "String Konkatenation statt StringBuilder" wird aber leider nur zu in Schleifen verwendet, ebenso wie überflüssige Objekterzeugungen. Ich denke das kann man beim Entwickeln gleich vermeiden, ohne dabei großartig an Wartungsverhalten einzubüßen, oder etwa nicht ? Und schon hat man indirekt etwas für die Performanz getan.
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|
|
|
| #52 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
Mal eine kurze Frage an alle Performancekritiker: Wie groß war bisher Eure größte Serveranwendung, an der Ihr bis jetzt mitgearbeitet habt? Zwei Tabellen, drei, oder sogar gar keine Datenbank? 10 Datensätze, oder vielleicht sogar 100? Oder vielleicht überhaupt keine?!?!
Theorie ist toll, labern auch, aber es gibt nun mal Bereiche, die müssen von vornherein schnell sein, einfach weil die Hardware in irgendeinem Keller minderwertig ist oder gar keine Mittel für nen teuren Server zur Verfügung stehen. Und da nutzt es mir relativ wenig, ob javac in der Version XXX jetzt meinen Schietcode aufräumt, bei dem ich zu faul war, den gleich richtig zu programmieren, oder nicht. Und wenn ich mich dann auch noch aus Bequemlichkeit auf die (auto) Optimierung verlasse, na super, wenn die in der nächsten Version nicht mehr funktioniert. Prost!
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|
|
|
| #53 (permalink) | ||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 13.09.2007
Beiträge: 8.314
Abgegebene Danke: 6
Erhielt 134 Danke für 132 Beiträge
|
Scalierbarkeit != Performance Sonst würden wir alle noch Maschinencode oder höchstens Assembler hacken ![]() Es geht ja nicht darum Anwendungen so langsam wie möglich machen, sondern darum, dass man nicht als allererstes an Performace denkt, ab einer bestimmten größe (Codebasis) kostet die Wartung des Codes mittelfristig weit mehr als die Serverhardware. Verstehe auch das Problerm nciht ehrlich gesagt, Profiler gibt es umsonst, damit findet man dann die echten Bottlenecks und kann immer noch was daran ändern, sofern dass Design das zulässt. |
|||||||||||||||
|
|
|
|||||||||||||||
| #54 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
Mein Gott, ich meine doch keine riesigen Änderungen. Ich meine diese kleinen Sachen wie z.B. häufige Konkatenierungen auf denselben String in größeren Schleifen, die einem ins Auge brennen, weil der gesunde Menschenverstand einem vorher schon sagt das das länger dauern kann ist. Dafür brauche ich keinen Profiler und meine Anwendung läßt sich genauso warten wie vorher.
Also kleine Sachen, die ich selber vermeiden kann, ohne das sich später jemand mit einem Profiler ne Birne machen muß.
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) Geändert von fastjack (18.03.2010 um 15:02 Uhr) |
|
|
|
| #55 (permalink) | |
|
Neuer Benutzer
Byte
Themenstarter
Registriert seit: 04.11.2009
Beiträge: 14
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
hi,
also eigentlich ging es bei mir garnicht um nen speziellen algorithmus, da hab ich mich wohl falsch ausgedrüct ^^ dachte aber auch net dass es dann nun zu so einem gespräch hier führt. ob ich nun 2000 versuche brauche um ein ergebnis zu bekommen , statt 150.000, finde ich doch schon wichtig. kla läuft das auch alles super mit den 150K oder noch mehr, nur warum sollte ich das so machen, wenn ich doch dann am ende bemerke , "hey, da lässt sich ja noch was optimieren" und was anderes wollte ich eigentlich nicht machen. wollte dann einfach testen, inwieweit sich die "optimierung" bei dem lösen auch in der gebrauchten zeit wiederspiegelt. denn was bringt es mir, wenn ich es schaffe nurnoch 1/100 der eigentlich benötigten lösungen zu testen, wenn ich dafür mehr zeit brauche? performance und ordentlicher code ist für mich schon sehr wichtig und sollte man auch immer drauf achten, denn was bringt es mir wenn ich da total die scheiße hinklatsche und 1000 schleifen hintereinanderpacke, obwohl ich alle zu 5 schleifen zusammenpacken kann. oder auch das logische ausschließen. muss etwas immer getestet werden, oder nur in speziellen fällen. und da finde ich es doch schon hilfreich zu wissen, wie man sowas am besten messen kann und was anderes wollte ich hier auch nicht erfahren ![]() naja abgesehen von der 80/20 regel ^^ die is cool ![]() ich bin auch einer der einfach drauf los schreibt und alles erstmal macht. dann setzt ich mich aber hin und hau am ende alle sachen raus. nicht weil ich es muss, sondern weil ich es einfach so will. glaube das machen viele hier, also ist denen die performance nicht ganz egal. gruß |
|
|
|
| #56 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
@Dude Du sprichst mir aus der Seele. Wie gesagt, ich denke wir meinem am Ende fast alle dasselbe, nur läßt es sich im Forum deutlicher schwerer Ausdrücken als im Gespräch. In diesem Sinne
![]() Hast Du messbare Werte bekommen, als Du die Anzahl der Iterationen/Objekt erhöht hast ?
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|
|
|
| #57 (permalink) | |
|
Neuer Benutzer
Byte
Themenstarter
Registriert seit: 04.11.2009
Beiträge: 14
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
hab es noch nicht öfters durchlaufen lassen.
müsste dazu noch änderungen vornehmen, denn momemtan ist alles noch so ausgelegt dass es nur einmal funktioniert ^^ finde auch eher wenig zeit, da ich noch viel für die schule machen muss und für die arbeit. werde es aber die tage nochmal genauer testen ^^ und für alle die es interessiert. es geht hier um einen schlichten sudoku löser ^^ nicht mehr und nicht weniger nur ist es kein einfacher zufalls/backtracking dingen, sondern da steck doch schon mehr dahinter ^^ ob es nun wieder sinn macht es zu optimieren sei dahin gestellt ^^ nur ich bin ja auch noch am lernen und dadurch lernt man erst richtig. so seh ich das ^^ gruß |
|
|
|
| #58 (permalink) | |||||||||||||||||||||||||||||||||||||
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Beiträge: 7.431
Blog-Einträge: 7
Abgegebene Danke: 16
Erhielt 33 Danke für 31 Beiträge
|
Mein Wissen ist rein theoretischer Natur und hat nix mit einem reellen Beispiel zu tun. Die ueber 10 Jahre Programmiererfahrung sind ebenso nur durch Unwissenheit gekommen beat that - irony... (wenn schon geflamed wird dann bitte die richtigen)
__________________
Test Driven Development is like sex. If you dont like it, you probably aint doing it right ! Proleptic programming is like driving 15 on the freeway because you will exit once and pass a school area ! Geändert von bygones (18.03.2010 um 15:30 Uhr) |
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
| #59 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 02.12.2009
Beiträge: 383
Blog-Einträge: 8
Abgegebene Danke: 6
Erhielt 32 Danke für 32 Beiträge
|
@bygone
Du arbeitest nicht zufällig in Redmond oder ? (Spaß)
__________________
Could not create connection; - nested throwable: (org.postgresql.util.PSQLException: FATAL: tut mir leid, schon zu viele Verbindungen) |
|
|
|
| #60 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Beiträge: 7.431
Blog-Einträge: 7
Abgegebene Danke: 16
Erhielt 33 Danke für 31 Beiträge
|
wenn dann lieber Mountain View
__________________
Test Driven Development is like sex. If you dont like it, you probably aint doing it right ! Proleptic programming is like driving 15 on the freeway because you will exit once and pass a school area ! |
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Witzecke | PhantomXXL | Plauderecke | 1165 | 01.07.2010 08:08 |
| Java lädt mit Firefox 3.5.5 nicht mehr! Windows 7 | 19_Dan_88 | Für Verirrte - Fragen zu JavaScript | 3 | 28.12.2009 00:18 |
| Java Sound Engine: Was liegt drunter? | tuxedo | Allgemeine Java-Themen | 7 | 31.08.2007 13:46 |
| Java 1.5 == Java 2 == Java 5 ? | Balian | Allgemeine Java-Themen | 14 | 19.12.2005 07:51 |
| Probleme beim installieren java 3d linux | Spiele- und Multimedia-Programmierung | 4 | 20.11.2005 01:40 | |