Avatar billede themepark Nybegynder
11. januar 2006 - 17:57 Der er 4 kommentarer

Generel performance i Java

Jeg er begyndt at tænke på performance nu i forbindelse med nogle af de ting, jeg laver derhjemme, og derfor vil jeg gerne have lidt gode råd omkring det.

Jeg har et par specifikke projekter, hvor jeg skal bruge hhv. MySQL databaser og applets med en del grafik, men hvad bør jeg vide i forbindelse med at optimere dem? Og så tænkte jeg også på hvad der er godt at vide mht. mere generel performance, måske ved de mere basale ting i Java.

Yderligere vil jeg også meget gerne have links til performance sites/tutorials og lignende, eller anbefalinger af gode bøger om performance. Alt kan forhåbentligt bruges :)
Avatar billede schwarz84 Nybegynder
11. januar 2006 - 18:14 #1
Jeg er ikke helt sikker på at jeg har forstået spørgsmålet rigtigt, men hvis du har nogle konkrete ting kan du jo klippe det ind her.

Generelt får man ikke meget ud af at 'optimere' Java-kode ved at lave besynderlige hacks. Sådan noget gør compileren bedre selv. Generelt er Java's performance forbedret utrolig meget gennem versionerne og Java 5.0 giver en performance som er meget tæt på native kodning (som eks. programmer skrevet i C++), men hvis man forsøger at optimere koden kommer man hurtigt til at stå i vejen for compileren i stedet for at hjælpe den.
De fleste web-sider der handler om performance, relaterer til de tidlige Java-versioner, hvor forskellige teknikker kunne bruges til at forbedre performance, men i dag er mange af disse ting indbygget i compileren.

Mht. interaktion med andre systemer (MySQL og applets med grafik) så handler det som altid om at bruge disse ting så effektivt som muligt. Altså at lave så få connections til databasen som muligt osv. Blinkeri i applets kan eksempelvis undgås med at bruge double buffering til at tegne billedet før man viser det.
Avatar billede arne_v Ekspert
11. januar 2006 - 18:15 #2
Java Performance Tuning / Jack Shirazi

Effective Java Programming Language Guide / Joshua Bloch
Avatar billede simonvalter Praktikant
11. januar 2006 - 18:42 #3
Hvis du aligevel vil se lidt på "besynderlige hacks" så er der pmd
http://pmd.sourceforge.net/ et værktøj som giver dig mulighed for at checke din kode for en masse ting, bla små optimeringer som kan reducere bytecode footprint og hastighed.

f.eks:

x ^= true;
istedet for
x = !x;

og sb.append('a');
istedet for
sb.append("a");

Han skriver en blog her:
http://tomcopeland.blogs.com/juniordeveloper/

Du kan også få optimerede collections osv. som du kan erstatte Java's egne med.

Om det man betale sig må være op til dig, men det skader vel ikke at vide nogen af de ting.

Lidt sjov læsning
http://www.eclipse.org/eclipse/development/performance/bloopers.html

Lidt database

http://rgarg.blogspot.com/2005/10/jdbc-performance-pointers.html
http://www.theserverside.com/articles/article.tss?l=JDBCPerformance
http://www.theserverside.com/articles/article.tss?l=JDBCPerformanceII
http://www.theserverside.com/articles/article.tss?l=JDBCPerformanceIII
http://www.theserverside.com/articles/article.tss?l=JDBCPerformanceIV

Jvm options
http://blogs.sun.com/roller/resources/watt/jvm-options-list.html
Avatar billede themepark Nybegynder
17. januar 2006 - 07:10 #4
Jeg vil lige prøve at kigge på de par bøger, arne,

Og til jer andre, så har det jeg vil ikke noget at gøre med besynderlige hacks, men god gammel optimering af performance :) Jeg har ikke noget kildekode, da jeg gerne vil kende til performance optimering inden jeg begynder på det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester