Avatar billede nanders Nybegynder
14. april 2010 - 14:51 Der er 9 kommentarer og
1 løsning

Code too large - compile error.

Kære eksperter,

Jeg står med et alvorligt problem.

Den kode jeg har lavet giver efter jeg har implementeret BigDecimal istedet for double en 'code too large' kompiler fejl.

Er der en måde at omgåes dette på.

Har læst, at kode max. må være 64k, min kode er dog oppe på 241000 tegn, men jeg er ikke sikker på det er tegnene, der tæller.

Jeg vil meget gerne e-maile min kode, så det kan ses hvad det er jeg roder med. Koden er lavet i IDE'en BlueJ. Jeg bruger BlueJ fordi det er den jeg i sin tid fik undervisning i på Universitetet, men måske der findes en bedre.

Ser frem til eventuelle løsningsforlag.

VH.

nanders
Avatar billede arne_v Ekspert
14. april 2010 - 15:03 #1
Limit paa 64 KB byte code er per metode.

Saa nemmeste workaround var at splitte den metode op i nogle flere metoder.
Avatar billede nanders Nybegynder
14. april 2010 - 15:24 #2
Hej Arne,

Problemet er, at det der fylder er en masse erklæringer af tal, der bruges i beregninger.

Måtte jeg sende koden til dig - måske du kan fornemme problemstillingen?

VH

nanders
Avatar billede arne_v Ekspert
14. april 2010 - 15:39 #3
Du maa godt emaile koden.
Avatar billede arne_v Ekspert
14. april 2010 - 16:09 #4
Nu har jeg kigger lidt paa koden.

En metode med 3000 linier er simpelthen for meget.

Split den metode op i et antal metode.

Det loeser dette problem, men vil ogsaa goere koden noget nemmere at vedligeholde.

En anden ting er at jeg tror at du kunne goere kode simplere ved at bruge nogle arrays.

x1y1z1,...,x3y3z3

kunne laves som:

xyz[][][]
Avatar billede arne_v Ekspert
17. april 2010 - 23:53 #5
Kommet videre?
Avatar billede nanders Nybegynder
19. april 2010 - 08:47 #6
Hej Arne,

Tak for kommentarene.

Snakkede med en datalog den anden dag. Han mente ikke jeg vinder noget ved BigDecimal fremfor double. Problemet opstod, da jeg implementerede BigDecimal i stedet for double. Det betød, at jeg istedet for +,-,* og /, skulle bruge metodekald hele tiden - det er formentlig det, der har gjort programmet for stort.

Du har ret mht. det med at metoden er alt for lang.

Jeg vil lave en init(), som kaldes i run, hvor alle initialiseringerne ligger.

Derudover vil jeg lægge alle erklæringerne i toppen af koden, og uden for run().

Det bliver sikkert nemmere for mig så.

Fik også at vide, at alle de kald til f.eks. add(), subtract(), divide() og multiply(), ville gøre min kode meget langsom.

vh

nanders
Avatar billede arne_v Ekspert
20. april 2010 - 02:11 #7
Koden bør absolut ryddes op - split metoden op, skift til arrays o.s.v..

Du vinder noget ved at bruge BigDecimal fremfor double:
- større precision
- større range

Men om du har brug for det er noget som kun du kan vurdere.

Metoder kald for BigDecimal er langsommere end operatorer på double.

Men der skal laves rigtigt mange operationer for at du kan mærke forskellen.
Avatar billede arne_v Ekspert
13. juni 2010 - 04:48 #8
Tid at få afsluttet her?
Avatar billede nanders Nybegynder
25. september 2010 - 21:30 #9
Bare skriv et svar ...
Avatar billede arne_v Ekspert
25. september 2010 - 23:37 #10
svar
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