Mostra notizie nelle discussioni
  • Avatar
    ☺
    Scritto da
    ::1
    il 2012-10-03 23:39:07.0 alle 2012-10-03 23:39:07.0
    Trollate totali: 12321
    [java] til: ottimizzare synchronized
    Young professional woman and busy mom.
    • Avatar
      ☺
      Scritto da
      ::1
      il 2012-10-04 08:48:56.0 alle 2012-10-04 08:48:56.0
      Trollate totali: 12321
      Re: [java] til: ottimizzare synchronized
      Scritto 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.
      • Avatar
        ☺
        Scritto da
        il 2012-10-04 08:59:27.0 alle 2012-10-04 08:59:27.0
        Trollate totali: 42885
        Re: [java] til: ottimizzare synchronized
        Scritto 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% Sorpresa !
        PHP sarebbe stato sempre lentissimo, con crash inaspettati nel 5% dei casi Geek
        `"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
        • Avatar
          ☺
          Scritto da
          ::1
          il 2012-10-04 11:18:54.0 alle 2012-10-04 11:18:54.0
          Trollate totali: 12321
          Re: [java] til: ottimizzare synchronized
          Scritto da: Giambo
          > Variazioni del 300% Sorpresa !

          Quindi è una ottimizzazione che dipende dalla jvm.
          Young professional woman and busy mom.
          • Avatar
            ☺
            Scritto da
            altg
            utente che non utiene
            il 2012-10-04 16:22:41.0 alle 2012-10-04 16:22:41.0
            Trollate totali: 11540
            Re: [java] til: ottimizzare synchronized
            > > Variazioni del 300% Sorpresa !
            >
            > Quindi è una ottimizzazione che dipende dalla jvm.

            Oppure da System.currentTimeMillis()... Fantasma
            • Avatar
              ☺
              Scritto da
              ::1
              il 2012-10-04 17:21:01.0 alle 2012-10-04 17:21:01.0
              Trollate totali: 12321
              Re: [java] til: ottimizzare synchronized
              Scritto da: altg
              > > > Variazioni del 300% Sorpresa !
              > >
              > > Quindi è una ottimizzazione che dipende dalla jvm.
              >
              > Oppure da System.currentTimeMillis()... Fantasma

              ha u a precisione dipendente dalla'architettura, nel caso peggiore di 16ms
              Young professional woman and busy mom.
              • Avatar
                ☺
                Scritto da
                altg
                utente che non utiene
                il 2012-10-04 17:51:20.0 alle 2012-10-04 17:51:20.0
                Trollate totali: 11540
                Re: [java] til: ottimizzare synchronized
                > > > > Variazioni del 300% Sorpresa !
                > > >
                > > > Quindi è una ottimizzazione che dipende dalla jvm.
                > >
                > > Oppure da System.currentTimeMillis()... Fantasma
                >
                > 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. Fantasma

                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.
                • Avatar
                  ☺
                  Scritto da
                  ::1
                  il 2012-10-04 19:02:00.0 alle 2012-10-04 19:02:00.0
                  Trollate totali: 12321
                  Re: [java] til: ottimizzare synchronized
                  Scritto da: altg
                  > > > > > Variazioni del 300% Sorpresa !
                  > > > >
                  > > > > Quindi è una ottimizzazione che dipende dalla jvm.
                  > > >
                  > > > Oppure da System.currentTimeMillis()... Fantasma
                  > >
                  > > 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. Fantasma
                  >
                  > 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.
                  • Avatar
                    ☺
                    Scritto da
                    altg
                    utente che non utiene
                    il 2012-10-04 19:25:10.0 alle 2012-10-04 19:25:10.0
                    Trollate totali: 11540
                    Re: [java] til: ottimizzare synchronized
                    > > > > > > Variazioni del 300% Sorpresa !
                    > > > > >
                    > > > > > Quindi è una ottimizzazione che dipende dalla jvm.
                    > > > >
                    > > > > Oppure da System.currentTimeMillis()... Fantasma
                    > > >
                    > > > 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. Fantasma
                    > >
                    > > 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. Anonimo
<softv>

Pagina generata in 126 millisecondi

Utenti attivi: 12 nell'ultimo minuto, 28 negli ultimi cinque minuti, 67 negli ultimi 15 minuti