-
-
Re: [java] til: ottimizzare synchronizedScritto daNon Autenticatoil 2012-10-03 23:42:40.0 alle 2012-10-03 23:42:40.0Scritto da: ::1
> http://stackoverflow.com/a/6123354
voi giavari perdete il giorno a tentare di raggirare il compilatore per un po' di performance in più
-
Re: [java] til: ottimizzare synchronizedScritto da: ::1
> http://stackoverflow.com/a/6123354
Ho voluto fare questa provetta stamattina:public class SynchroTest { public static class StopWatch { public long start = System.currentTimeMillis(), stop = -1; public void stop() { stop = System.currentTimeMillis(); } public void reset() { start = System.currentTimeMillis(); stop = -1; } public String toString() { return (stop - start) + "ms"; } } public static void main(String[] args) throws Exception { System.out.println(System.getProperty("java.fullversion")); int N = 1000000; StopWatch s = new StopWatch(); StringBuffer sb = new StringBuffer(N); s.reset(); for (int i=0;i<N;i++) { sb.append('a'); } s.stop(); System.out.println("append non synchronized: "+s); sb = new StringBuffer(N); s.reset(); synchronized(sb) { for (int i=0;i<N;i++) { sb.append('a'); } } s.stop(); System.out.println("append synchronized: "+s); } }
Il risultato:J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20111020 (JIT enabled) J9VM - 20111017_92807_lHdSMr JIT - 20110916_20782_r8 GC - 20110524_AA append non synchronized: 47ms append synchronized: 93ms
Myth status: busted.Young professional woman and busy mom.-
Re: [java] til: ottimizzare synchronizedScritto da: ::1
> Myth status: busted.
IMHO una sola prova non e' rappresentativa:[~] giambo $ java -version java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b03) Java HotSpot(TM) Client VM (build 20.8-b03, mixed mode) [~] giambo $ java SynchroTest null append non synchronized: 47ms append synchronized: 15ms [~] giambo $ java SynchroTest null append non synchronized: 31ms append synchronized: 16ms [~] giambo $ java SynchroTest null append non synchronized: 15ms append synchronized: 16ms [~] giambo $ java SynchroTest null append non synchronized: 31ms append synchronized: 15ms [~] giambo $ java SynchroTest null append non synchronized: 16ms append synchronized: 0ms [~] giambo $ java SynchroTest null append non synchronized: 15ms append synchronized: 16ms [~] giambo $
Variazioni del 300%
!
PHP sarebbe stato sempre lentissimo, con crash inaspettati nel 5% dei casi
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: [java] til: ottimizzare synchronizedScritto da: Giambo
> Variazioni del 300%
!
Quindi è una ottimizzazione che dipende dalla jvm.Young professional woman and busy mom.-
Re: [java] til: ottimizzare synchronizedScritto daaltgutente che non utieneil 2012-10-04 16:22:41.0 alle 2012-10-04 16:22:41.0Trollate totali: 11540> > Variazioni del 300%
!
>
> Quindi è una ottimizzazione che dipende dalla jvm.
Oppure da System.currentTimeMillis()...
-
Re: [java] til: ottimizzare synchronizedScritto da: altg
> > > Variazioni del 300%
!
> >
> > Quindi è una ottimizzazione che dipende dalla jvm.
>
> Oppure da System.currentTimeMillis()...
ha u a precisione dipendente dalla'architettura, nel caso peggiore di 16msYoung professional woman and busy mom.-
Re: [java] til: ottimizzare synchronizedScritto daaltgutente che non utieneil 2012-10-04 17:51:20.0 alle 2012-10-04 17:51:20.0Trollate totali: 11540> > > > Variazioni del 300%
!
> > >
> > > Quindi è una ottimizzazione che dipende dalla jvm.
> >
> > Oppure da System.currentTimeMillis()...
>
> ha u a precisione dipendente dalla'architettura,
Tipico.
> nel caso peggiore di 16ms
Che pero` e` paragonabile ai tempi di esecuzione dell'intero ciclo, nei test di sopra.
Se c'e` un modo di arrivare all'high-performance timer, quello potrebbe far luce. Non intendo solamente il TSC, ma il TSC coordinato dal sistema in modo da normalizzare le variazioni del bus clock dovute a tecnologie sul tipo di speedstep, l'eventuale riallocazione del thread a un altro core, eccetera. Sulle API Windows c'e` l'accoppiata QueryPerformanceFrequency/QueryPerformanceCounter.-
Re: [java] til: ottimizzare synchronizedScritto da: altg
> > > > > Variazioni del 300%
!
> > > >
> > > > Quindi è una ottimizzazione che dipende dalla jvm.
> > >
> > > Oppure da System.currentTimeMillis()...
> >
> > ha u a precisione dipendente dalla'architettura,
>
> Tipico.
>
> > nel caso peggiore di 16ms
>
> Che pero` e` paragonabile ai tempi di esecuzione dell'intero ciclo, nei test di sopra.
>
> Se c'e` un modo di arrivare all'high-performance timer, quello potrebbe far luce.
Oppure ripetere il test aumentando il valore di N.Young professional woman and busy mom.-
Re: [java] til: ottimizzare synchronizedScritto daaltgutente che non utieneil 2012-10-04 19:25:10.0 alle 2012-10-04 19:25:10.0Trollate totali: 11540> > > > > > Variazioni del 300%
!
> > > > >
> > > > > Quindi è una ottimizzazione che dipende dalla jvm.
> > > >
> > > > Oppure da System.currentTimeMillis()...
> > >
> > > ha u a precisione dipendente dalla'architettura,
> >
> > Tipico.
> >
> > > nel caso peggiore di 16ms
> >
> > Che pero` e` paragonabile ai tempi di esecuzione dell'intero ciclo, nei test di sopra.
> >
> > Se c'e` un modo di arrivare all'high-performance timer, quello potrebbe far luce.
>
> Oppure ripetere il test aumentando il valore di N.
Troppo facile, non e` per veri hackers.
-
-
-
-
-
-
-
-