/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Optimering af kode (design)
Fra : Jakob Moll


Dato : 10-10-05 11:08

Hej NG

Jeg sidder med et projekt hvor jeg skal gemme en masse data i nogle
datastrukturer.

Oprindeligt have jeg tænkt at lave én klasse til at holde data (denne
klasse vil blive brugt mange gange - og svarer lidt til C's struct) og
lave en anden klasse til at manipulere disse data (lægge alle funktioner
mm. her).

Rent (OO)design mæssigt ville jeg dog hellere have funktionerne liggende
i den første klasse, og helt undgå klasse to (med funktionerne).

Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.

Hvad vil være mest effektivt ?

mvh

Jakob

 
 
Arne Vajhøj (10-10-2005)
Kommentar
Fra : Arne Vajhøj


Dato : 10-10-05 11:20

Jakob Moll wrote:
> Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
> funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.

Java (og formentlig også alle andre OO sprog) gemmer kun
koden til metoderne en gang selvom du opretter en million
instanser af klassen.

Arne

Thorbjoern Ravn Ande~ (10-10-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 10-10-05 13:37

Jakob Moll <jakobmollREMOVE@gmail.com> writes:

> Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
> funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.

Ja.

Vær opmærksom på at hvert objekt ud over dets data bruger noget plads
netop til at hitte dens metoder mv. Har du rigtigt mange data er det
om at have flest mulige data pr objekt. (en passende array af en
basal datatype fx), samt være opmærksom på at man kan tildele Java
mere ram til variable med mx-flaget til java.exe.

--
Thorbjørn Ravn Andersen


Michael Zedeler (10-10-2005)
Kommentar
Fra : Michael Zedeler


Dato : 10-10-05 20:43

Jakob Moll wrote:
> Hej NG
>
> Jeg sidder med et projekt hvor jeg skal gemme en masse data i nogle
> datastrukturer.
>
> Oprindeligt have jeg tænkt at lave én klasse til at holde data (denne
> klasse vil blive brugt mange gange - og svarer lidt til C's struct) og
> lave en anden klasse til at manipulere disse data (lægge alle funktioner
> mm. her).
>
> Rent (OO)design mæssigt ville jeg dog hellere have funktionerne liggende
> i den første klasse, og helt undgå klasse to (med funktionerne).

Det kan være at du egentlig har tænkt i retning af en slags
flyweight-konstruktion. Fordelene ved den er at man undgår meget af det
overhead, der ligger i at instatiere mange klasser.

Prøv at se her:
http://cs.colgate.edu/faculty/nevison/cs303web/notes/TheFlyWeightPattern.ppt

http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-designpatterns.html

> Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
> funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.

Java gemmer kun selve koden til hver klasse ét sted.

> Hvad vil være mest effektivt ?

Det kommer an på din situation. Hvis du har brug for en masse ens
objekter, der blot gemmer på forskellige stumper data, er
flyweight-mønsteret muligvis det rigtige.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Michael Zedeler (10-10-2005)
Kommentar
Fra : Michael Zedeler


Dato : 10-10-05 20:54

Michael Zedeler wrote:
> overhead, der ligger i at instatiere mange klasser.

....men der skulle stå:

> overhead, der ligger i at instatiere mange objekter.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Thrane (10-10-2005)
Kommentar
Fra : Thrane


Dato : 10-10-05 23:45

Michael Zedeler wrote:
> Jakob Moll wrote:
>
>> Hej NG
>>
>> Jeg sidder med et projekt hvor jeg skal gemme en masse data i nogle
>> datastrukturer.
>>
>> Oprindeligt have jeg tænkt at lave én klasse til at holde data (denne
>> klasse vil blive brugt mange gange - og svarer lidt til C's struct) og
>> lave en anden klasse til at manipulere disse data (lægge alle
>> funktioner mm. her).
>>
>> Rent (OO)design mæssigt ville jeg dog hellere have funktionerne
>> liggende i den første klasse, og helt undgå klasse to (med funktionerne).
>
>
> Det kan være at du egentlig har tænkt i retning af en slags
> flyweight-konstruktion. Fordelene ved den er at man undgår meget af det
> overhead, der ligger i at instatiere mange klasser.
>

Design mønstre er en dejlig ting, da de hjælper med at gøre kode
standardiseret, pænt, overskueligt og nemt at snakke om. Dog skal man
være lidt opmærksom på at bruge dem rigtig.

Der har fornyeligt været afholdt JAOO (www.jaoo.dk) i aarhus hvor der
blev afholdt et foredrag om "Java Technology Performance Myths Exposed"
givet af Ivan Posva og Gil Tene. De fremhævede blandt andet at myten on
pooling af objekter kun var gældende ved store og komplekse objekter.

Dette skyldes at forskellige implementeringer af JVMer idag bliver
optimeret til netop at håndtere et stort antal instantieringer hurtigt.

Det betyder dog _ikke_ Flyweight mønsteret _ikke_ er godt, men at man
skal passe på at man forstår at bruge det rigtig. Man risikere at det
giver den modsatte effekt.

> Prøv at se her:
> http://cs.colgate.edu/faculty/nevison/cs303web/notes/TheFlyWeightPattern.ppt
>
>
> http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-designpatterns.html
>
>> Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
>> funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.
>
>
> Java gemmer kun selve koden til hver klasse ét sted.
>
>> Hvad vil være mest effektivt ?
>
>
> Det kommer an på din situation. Hvis du har brug for en masse ens
> objekter, der blot gemmer på forskellige stumper data, er
> flyweight-mønsteret muligvis det rigtige.
>
> Mvh. Michael.

mvh Claus Thrane

Jakob Moll (11-10-2005)
Kommentar
Fra : Jakob Moll


Dato : 11-10-05 08:56

Michael Zedeler wrote:
> Jakob Moll wrote:
>
>> Hej NG
>>
>> Jeg sidder med et projekt hvor jeg skal gemme en masse data i nogle
>> datastrukturer.
>>
>> Oprindeligt have jeg tænkt at lave én klasse til at holde data (denne
>> klasse vil blive brugt mange gange - og svarer lidt til C's struct) og
>> lave en anden klasse til at manipulere disse data (lægge alle
>> funktioner mm. her).
>>
>> Rent (OO)design mæssigt ville jeg dog hellere have funktionerne
>> liggende i den første klasse, og helt undgå klasse to (med funktionerne).
>
>
> Det kan være at du egentlig har tænkt i retning af en slags
> flyweight-konstruktion. Fordelene ved den er at man undgår meget af det
> overhead, der ligger i at instatiere mange klasser.
>
> Prøv at se her:
> http://cs.colgate.edu/faculty/nevison/cs303web/notes/TheFlyWeightPattern.ppt
>
>
> http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-designpatterns.html
>
>> Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
>> funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.
>
>
> Java gemmer kun selve koden til hver klasse ét sted.
>

det vidste jeg jo egentlig nok godt (tænk-tast-tal...)

>> Hvad vil være mest effektivt ?
>
>
> Det kommer an på din situation. Hvis du har brug for en masse ens
> objekter, der blot gemmer på forskellige stumper data, er
> flyweight-mønsteret muligvis det rigtige.
>

meget interessant "pattern" (man skulle måske endda investere i GOF
bogen og få flere gode ide'er)

Jeg tror nu ikke lige at det kan genbruges her - min situation er lidt
anderledes:

skal gemme værdier for links mellem peaks i forskellige
massespektrogrammer. Er pt. i fasen for at teste forskellige
implementeringers hastighed/hukommelses forhold.

ide'er pt.
*4-dim. array (fylder!)
*linked lists (fylder mindre, mere krævende at opbygge/vedligeholde)

> Mvh. Michael.

nå - men ihvertfald tak for linked til artiklen - den vil i forskellig
grad blive indarbejdet i projektet

/Jakob

Anon (13-10-2005)
Kommentar
Fra : Anon


Dato : 13-10-05 01:14

Jakob Moll wrote:
> skal gemme værdier for links mellem peaks i forskellige
> massespektrogrammer. Er pt. i fasen for at teste forskellige
> implementeringers hastighed/hukommelses forhold.

Er lidt nysgerrig - hvad skal applikationen bruges til?

- beregning?
- transformation?
- visualisering?
- ...?

Anon

Jakob Moll (13-10-2005)
Kommentar
Fra : Jakob Moll


Dato : 13-10-05 16:30

Anon wrote:
> Jakob Moll wrote:
>
>>skal gemme værdier for links mellem peaks i forskellige
>>massespektrogrammer. Er pt. i fasen for at teste forskellige
>>implementeringers hastighed/hukommelses forhold.
>
>
> Er lidt nysgerrig - hvad skal applikationen bruges til?
>
> - beregning?
> - transformation?
> - visualisering?
> - ...?
>
> Anon

Det er en del af et eksamensprojekt hvor jeg vha. forskellige metoder
skal prøve at gruppere massespektrogrammer fra svampe alt efter hvor
meget de ligner hinanden

mvh.

Jakob

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste