Avatar billede tri Nybegynder
07. november 2002 - 19:37 Der er 7 kommentarer og
1 løsning

Performance spørgsmål

Jeg har en metode som modtager 2 værdier, og på baggrund af dem, så retuneres en 3. værdi.


Her er et lille udsnit af koden:

public String test(String v1, String v2) {
        String val1 = v1;
        String val2 = v2;
        String res = "";

        if ((val1.equals("abc") && (val2.equals("abc")))) {
            res = "1";
        }
        else if ((val1.equals("abc") && (val2.equals("abcd")))) {
            res = "2";
        }
        else if ((val1.equals("abc") && (val2.equals("abcde")))) {
            res = "3";
        }
osv.....




    return res;
    }


Test metoden kan retunerer ca. 300 forskellig værdiere(alt efter input), og jeg synes det er lidt tungt at bruge if, else if hele vejen ned gennem metoden.

Metoden bliver kaldt meget ofte.

Findes der en måde at løse det på, så det performer bedre?

(Case en nok ikke aktuel, da det er tekst jeg tjekker på.)
Avatar billede di8leva Nybegynder
07. november 2002 - 19:39 #1
well

med java 1.4 kan du använda regex (java.util.regex.*) og det er nok det snabbaste... sun har nog optimerat det så bra som möjligt...
Avatar billede di8leva Nybegynder
07. november 2002 - 19:40 #2
but then again.....

att göra 300 ifs med två equals i varje kanske tar 300 millisekunder, eller mindre, så det er ikke performance du skall ha problem med, utan det blir ganska mycket kod hvis du skall skriva
if
else if
.
.
.
.
300 ggr =)
Avatar billede soelvpil Nybegynder
07. november 2002 - 20:24 #3
Der må være en eller anden from for systematik i forholdet mellem input og output. Kan du beskrive det lidt nærmere?
Avatar billede disky Nybegynder
07. november 2002 - 20:26 #4
lav en hashtabel der indeholder de 300 kombinationer, og slå op i den.

SÅ tager det kun lidt tid på constructor niveau, men derefter betyder det intet om det er svar 1 eller svar 312

Hashmap har en tidskomplexitet på O(1)
Avatar billede tri Nybegynder
07. november 2002 - 20:33 #5
disky:

Kan man have 2 nøgler i et hashmap?
Avatar billede disky Nybegynder
07. november 2002 - 20:42 #6
Nej men du kan samle dine nøgle i en nøgle f.eks.

HashMap map=new HashMap();

String val1="abc";
String val2="cde";
String værdi=1;

Nå du så vil genere din hasmap siger du så

map.put(val1+":"+val2,værdi);

Nå du så senere vil finde en nøgle siger du:

resultat=map.get(val1+":"+val2);

Du pakker altså dine to nøgler sammen til en, f.eks. adskilt med :
Avatar billede tri Nybegynder
07. november 2002 - 21:34 #7
disky:

Det virker fint, og giver mindre kode, og er hurtigere.
Takker
Avatar billede disky Nybegynder
07. november 2002 - 21:58 #8
selv tak
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