[Java] performance issues

Pagina: 1
Acties:

  • py.mosjuh
  • Registratie: Oktober 2002
  • Laatst online: 24-10-2022

py.mosjuh

fikkert.net

Topicstarter
Hey allemaal,

ik ben momenteel voor mijn afstudeerstage bezig om een (3d) simulatie programma te maken om een wedstrijd robot voetbal in te simuleren. hiervoor gebruik ik o.a. JNI, Java3D en Swing. Het programma is erg netjes ontworpen (al zeg ik het zelf ;)). echter is het momenteel (de basis is klaar) onacceptabel traag. Ik wil dus m.b.v. een profiler (EJP) gaan kijken waar ik het een en ander kan verbeteren.

Zelf zit ik al te denken aan de volgende zaken (maar dat moet EJP nader uitwijzen):
- LinkedList gebruik omzetten naar ArrayList of pure arrays
- zo min mogelijk gaan casten (ik gebruik nu nog veel casting)
- System.currentTimeMillis() ipv new java.util.Date().getTime() (alhoewel ik hierover heb gelezen dat System.currentTimeMillis() tot 0.5 msec kan duren!)
- StringBuffers i.p.v. "+" operator

Zoals jullie wel merken is performance alles op dit moment dus ik zou graag nog (bruikbare) tips willen. Mocht je geinteresseerd zijn, ik hou voor mijn begeleider op school een simpele webzijde bij: MiS20 robot soccer simulator

thx voor eventuele reacties alvast!

Kites rise highest against the wind - not with it (Winston Churcill)


  • Kama
  • Registratie: Mei 2002
  • Laatst online: 22-08 12:00

Kama

Aritifical Intelligenticus

StringBuffers i.p.v. "+" operator
Dit scheelt in ieder geval al enorm...

Niels


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Als de volgorde niet uitmaakt voor Collections en er geen dubbele elementen in voor komen, zou ik een HashSet gebruiken ipv LinkedList / ArrayList. Althans, dat zal wel wat sneller zijn bij grote Collections.

  • py.mosjuh
  • Registratie: Oktober 2002
  • Laatst online: 24-10-2022

py.mosjuh

fikkert.net

Topicstarter
Dash2in1 schreef op 15 May 2003 @ 13:58:
Als de volgorde niet uitmaakt voor Collections en er geen dubbele elementen in voor komen, zou ik een HashSet gebruiken ipv LinkedList / ArrayList. Althans, dat zal wel wat sneller zijn bij grote Collections.
Het varieert qua plaats hoe groot de collecties zijn.. er zijn 2 teams die elk een LinkedList hebben van 5 robotjes (het is tenslotte robotvoetbal ;)). Echter heeft elk van die robotjes een lijst van positie vectoren (x,y,heading & timestamp). deze lijst kan heel erg groot worden maar moet wel op volgorde zitten.. denk bijv aan dat er 30 keer per seconde een nieuwe vector voor elk robotje en de bal bij komt. dit zijn er dus 330 per seconde voor de bal en robots samen... denk hierbij ook dat een wedstrijd tenminste 10 minuten duurt... :X

Ik heb momenteel grote problemen om EJP op de sparc die ik gebruik aan de gang te krijgen dus ik ben maar overgestapt op hprof, de standaard profiler van Java. Bij Sun hebben ze ook een simpele analyse tool gemaakt in de package PrefAnal.jar. Deze tool geeft echter steeds andere waarden bij verschillende runs van mijn programma.. de ene keer geeft de profiler aan dat java.lang.Object.wait() de boosdoener is (ik snap niet hoe maar goed) en de volgende keer zijn het de communicatie threads met het MI20 programma..

iemand tips voor profilers?

Kites rise highest against the wind - not with it (Winston Churcill)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het is pas echt te zeggen wat het nuttigst is als de profiler-resultaten bekend zijn. Tot die tijd is optimalizeren eigenlijk een nutteloos iets, want misschien optimise je wel dingen die maar een enkele keren worden aangeroepen, wat dus uiteindelijk weinig invloed heeft op de performance

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.