Thread: java optimizaton
-
29-09-2013, 17:44 #1Member
- Registered
- 19/06/09
- Location
- Antwerpen
- Posts
- 117
- iTrader
- 0
- Mentioned
- 0 Post(s)
java optimizaton
Ik ben bezig met een klein projectje met een vriend en we zijn op een stadium gekomen dat een deel af is en dat we iets werkend hebben, nog niet het complete programma, maar het heeft bruikbare functionaliteit dat solo al af zou kunnen zijn maar gewoon te beperkt. Willen we nu starten met dinge efficienter te maken. Zijn er van die mainstream en ook geavanceerdere tricks en tips waar ge u code best aan kunt laten voldoen om het effiencient te houden? Compileer tijd te verminderen, minder cpu usage.
no votes
-
-
29-09-2013, 20:21 #2Approved 9liver
- Registered
- 28/11/03
- Location
- Drongen
- Posts
- 6,665
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 6/28
Ik gebruik VisualVM wat een heel goeie tool is om hotspots te vinden. Je moet wel wat plugins downloaden eerst.
Je kan terwijl je het programma test, de profiler laten lopen op CPU. Dan kan je een filter instellen op jouw packages en zien hoelang elke methode in totaal de CPU nodig heeft. Je kan ook zien hoeveel keer elke methode aangeroepen is. Op die manier kan je de gemiddelde CPU time/call berekenen en kijken om de methodes te optimaliseren die het meest aangeroepen worden.
Als je die gebruikt moet je wel altijd naar de CPU (self time) kijken. Dat is de tijd dat de methode de CPU gebruikt.
Ik gebruik dit altijd bij klanten om performantie problemen op te sporen en het heeft me nog nooit in de steek gelaten. De interpretatie van de gegevens is wel niet altijd evident maar als het op eigen geschreven code is moet het wel een stuk gemakkelijker gaan.no votes
-
29-09-2013, 20:54 #3Member
- Registered
- 08/09/02
- Location
- -
- Posts
- 2,044
- iTrader
- 9 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/6
Objecten compact houden, caching gebruiken, Stringbuilders, .. en vooral slim programmeren (geen domme dingen in loopjes doen).
Compile time maakt geen zak uit. Dat heeft geen directe impact op uw programma.no votes
-
30-09-2013, 11:52 #4Member
- Registered
- 19/06/09
- Location
- Antwerpen
- Posts
- 117
- iTrader
- 0
- Mentioned
- 0 Post(s)
visualvm ziet er inderdaad wel interessant uit, zeker nuttig en ga ik gebruiken, bedankt daarvoor.
Op het moment lijkt het dat er nog een domme/onnodige functies, classes en ongebruikte variabelen zijn.
Er is een moment dat ik een mail stuur dat het programma meer tijd nodig heeft dan ik geduld heb. Is het mogelijk om de interface verder te laten lopen op de ene core en het zenden van de mail op een andere core? Dat de gebruiker geen lag ondervind?no votes
-
30-09-2013, 11:55 #5Approved 9liver
- Registered
- 28/11/03
- Location
- Drongen
- Posts
- 6,665
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 6/28
Normaal doe je dat door multithreading. Heeft niet per se iets met cores te maken. Je moet gewoon een apparte thread maken die de mail verstuurd en dan kan het programma gewoon verder.
no votes
-
30-09-2013, 12:22 #6Member
- Registered
- 19/06/09
- Location
- Antwerpen
- Posts
- 117
- iTrader
- 0
- Mentioned
- 0 Post(s)
ik heb voor mijn mail een apparte thread gemaakt en werkt nu inderdaad zonder lag. Ik dacht daar al aan mor overschachte de nodige code een beetje. Java zal zijn argumenten niet altijd by reference doorgeven, is er een manier om dit te omzeilen dat er toch minder geheugen word gebruikt zonder de code onoverzichtelijk en slordig te maken?
no votes
-
30-09-2013, 13:15 #7Approved 9liver
- Registered
- 28/11/03
- Location
- Drongen
- Posts
- 6,665
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 6/28
Java geeft ALTIJD objecten door als referentie tenzij het primitieve types zijn...
Dus daar kunt ge weinig aan doen dus dat is al optimaal voor u geheugen gebruik.
VisualVM kan u trouwens ook cijfers geven van hoeveel instances ge hebt van iedere klasse en hoeveel bytes die in totaal innemen. Ook handig voor tuning.no votes
-
30-09-2013, 17:43 #8Approved 9liver
- Registered
- 22/08/11
- Location
- Nederland
- Posts
- 1,529
- iTrader
- 123 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/10
no votes
-
30-09-2013, 21:44 #9Member
- Registered
- 08/09/02
- Location
- -
- Posts
- 2,044
- iTrader
- 9 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/6
Java is altijd by value. Int geval van objecten is de value gewoon de reference.
no votes
-
30-09-2013, 22:29 #10Member
- Registered
- 13/08/12
- Location
- Belgiƫ > Limburg
- Posts
- 247
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Inderdaad, het is zoals de twee posters hierboven zeggen; voorbeelden en extra uitleg kan je onder andere hier vinden parameter passing - Is Java "pass-by-reference"? - Stack Overflow
"There are always things like that. Things more important than yourself, than your dreams." ~ Edward Elric
no votes

