/ 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
Typecast eller polymorfi ?
Fra : Project apixs


Dato : 13-09-01 11:05

Af ren nysgerrighed:
Såfremt man har et Object myObj der i virkeligheden er en String og skal
have skrevet teksten i fx et JTextArea med metoden setText(String nytekst)
der tager en String som parameter, hvad ville så være det mindst
ineffektive:
- At typecast Object til String a'la setText( (String)myObj ) eller
- At benytte polymorfi og kalde toString metoden på myObj setText(
myObj.toString() )

Sagt på en anden måde, hvad tager længst tid: At typecaste eller at lave et
polymorft metodekald?

/ Bjarne



 
 
Brian Matzon (13-09-2001)
Kommentar
Fra : Brian Matzon


Dato : 13-09-01 11:28

"Project apixs" <project@innovazion.dk> wrote in message news:9nq0bl$heu$1@sunsite.dk...
> Af ren nysgerrighed:
> Såfremt man har et Object myObj der i virkeligheden er en String og skal
> have skrevet teksten i fx et JTextArea med metoden setText(String nytekst)
> der tager en String som parameter, hvad ville så være det mindst
> ineffektive:
> - At typecast Object til String a'la setText( (String)myObj ) eller
> - At benytte polymorfi og kalde toString metoden på myObj setText(
> myObj.toString() )
>
> Sagt på en anden måde, hvad tager længst tid: At typecaste eller at lave et
> polymorft metodekald?

Hmm ikke ret sikker, men jeg vil mene at setText(myObj.toString())
(eller bare setText(myObj) ?) burde være hurtigst, idet der ikke skal laves
en temporer reference til en String...

/Brian Matzon





Ulrik Magnusson (13-09-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 13-09-01 18:16

Project apixs wrote:

> Af ren nysgerrighed:
> Såfremt man har et Object myObj der i virkeligheden er en String og skal
> have skrevet teksten i fx et JTextArea med metoden setText(String nytekst)
> der tager en String som parameter, hvad ville så være det mindst
> ineffektive:
> - At typecast Object til String a'la setText( (String)myObj ) eller
> - At benytte polymorfi og kalde toString metoden på myObj setText(
> myObj.toString() )
>
> Sagt på en anden måde, hvad tager længst tid: At typecaste eller at lave et
> polymorft metodekald?

Du mener vel: at typecaste eller bruge toString() metoden? Jeg tror ikke, du
vil finde et autoriseret svar på det - det afhænger vel af toString() metoden.
Et godt gæt vil nok være at en grundoperation som fx en konvertering
i de fleste tilfælde er hurtigere end et metodekald.

Du kan teste det med nedenstående.

class Test
{
static void f( String s )
{}
public static void main( String[] args )
{
long start = System.currentTimeMillis();
Object s = "hello";
for( int i = 0; i < 1000000000; i++ )
{
f( (String)s );
}
System.out.println( "Cast:\t\t" + (System.currentTimeMillis()-start) +
" ms." );
start = System.currentTimeMillis();
for( int i = 0; i < 1000000000; i++ )
{
f( s.toString() );
}
System.out.println( "toString():\t" +
(System.currentTimeMillis()-start) + " ms." );
}
}


output:
Cast: 33290 ms.
toString(): 54490 ms.

NB! prøv at indsætte denne linie:
if( s instanceof String)
umiddelbart før linien:
f( (String)s );


Ulrik Magnusson


Birthe & Bjarne (13-09-2001)
Kommentar
Fra : Birthe & Bjarne


Dato : 13-09-01 20:13

Jeg mener polymorfi i den forstand at String overskriver / overloader
toString() metoden ellers ville toString() kaldet returnere en streng af
vrøvl fx: java.lang.Object@92c278.

/Bjarne

"Ulrik Magnusson" <ulrikm@yahoo.com> wrote in message
news:3BA0E9C1.2C4109FE@yahoo.com...
> Project apixs wrote:
>
> > Af ren nysgerrighed:
> > Såfremt man har et Object myObj der i virkeligheden er en String og skal
> > have skrevet teksten i fx et JTextArea med metoden setText(String
nytekst)
> > der tager en String som parameter, hvad ville så være det mindst
> > ineffektive:
> > - At typecast Object til String a'la setText( (String)myObj ) eller
> > - At benytte polymorfi og kalde toString metoden på myObj setText(
> > myObj.toString() )
> >
> > Sagt på en anden måde, hvad tager længst tid: At typecaste eller at lave
et
> > polymorft metodekald?
>
> Du mener vel: at typecaste eller bruge toString() metoden? Jeg tror ikke,
du
> vil finde et autoriseret svar på det - det afhænger vel af toString()
metoden.
> Et godt gæt vil nok være at en grundoperation som fx en konvertering
> i de fleste tilfælde er hurtigere end et metodekald.
>
> Du kan teste det med nedenstående.
>
> class Test
> {
> static void f( String s )
> {}
> public static void main( String[] args )
> {
> long start = System.currentTimeMillis();
> Object s = "hello";
> for( int i = 0; i < 1000000000; i++ )
> {
> f( (String)s );
> }
> System.out.println( "Cast:\t\t" +
(System.currentTimeMillis()-start) +
> " ms." );
> start = System.currentTimeMillis();
> for( int i = 0; i < 1000000000; i++ )
> {
> f( s.toString() );
> }
> System.out.println( "toString():\t" +
> (System.currentTimeMillis()-start) + " ms." );
> }
> }
>
>
> output:
> Cast: 33290 ms.
> toString(): 54490 ms.
>
> NB! prøv at indsætte denne linie:
> if( s instanceof String)
> umiddelbart før linien:
> f( (String)s );
>
>
> Ulrik Magnusson
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste