My personnal result (Windows XP AMD Athlon XP 2800+):
C:\>java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)
System.nanoTime took : 1432396575ns
System.currentTimeMillis took : 61866802ns
-> currentTimeMillis is 20* quicker !
Nico.
2008/2/1, nicolas de loof <[EMAIL PROTECTED]>:
>
> and without stupide copy/paste colorde formatting :
>
>
>
> public class CurrentTimeMillisVsNanoTime
> {
>
> static int loops = 1000000;
> /**
> * @param args
> */
> public static void main( String[] args )
> {
> long time = System.nanoTime();
> long t;
> for ( int i = 0; i < loops; i++ )
> {
> t = System.nanoTime();
> }
> System.out.println( "System.nanoTime took : " + (
> System.nanoTime() - time ) + "ns" );
>
> time = System.nanoTime();
> for ( int i = 0; i < loops; i++ )
> {
> t = System.currentTimeMillis();
> }
> System.out.println( "System.currentTimeMillis took : " + (
> System.nanoTime() - time ) + "ns" );
> }
>
> }
>
>
>
> 2008/2/1, nicolas de loof <[EMAIL PROTECTED]>:
> >
> > I didn't commit from my office, but the bench looks like :
> >
> > *
> >
> > public
> > **class* CurrentTimeMillisVsNanoTime
> >
> > {
> >
> > *static* *int* *loops* = 1000000;
> >
> > /**
> >
> > * [EMAIL PROTECTED] args
> >
> > */
> >
> > *public* *static* *void* main( String[] args )
> >
> > {
> >
> > *long* time = System.*nanoTime*();
> >
> > *long* t;
> >
> > *for* ( *int* i = 0; i < *loops*; i++ )
> >
> > {
> >
> > t = System.*nanoTime*();
> >
> > }
> >
> > System.
> > *out*.println( "System.nanoTime took : " + (System.*nanoTime*() - time )
> > + "ns" );
> >
> > time = System.*nanoTime*();
> >
> > *for* ( *int* i = 0; i < *loops*; i++ )
> >
> > {
> >
> > t = System.*currentTimeMillis*();
> >
> > }
> >
> > System.
> > *out*.println( "System.currentTimeMillis took : " + (System.*nanoTime*()
> > - time ) + "ns" );
> >
> > }
> >
> > }
> >
> >
> >
> > 2008/2/1, sebb <[EMAIL PROTECTED]>:
> > >
> > > And I could probably run it on OpenVMS
> > >
> > > ;-)
> > >
> > > On 01/02/2008, Siegfried Goeschl <[EMAIL PROTECTED]> wrote:
> > > > Hi Nicolas,
> > > >
> > > > if I either find the test code (or you commit it) I can tell you on
> > > Mac
> > > > OS X .... :-)
> > > >
> > > > Siegfried Goeschl
> > > >
> > > > nicolas de loof wrote:
> > > > > on java < 5 backport-util-concurrent is required to provide
> > > > > System.nanotime()
> > > > >
> > > > > I've no idea of the result of such a bench on other JVM /
> > > > > architectures. I'll try it on some of my corporate servers
> > > (solaris /
> > > > > linux ...)
> > > > >
> > > > > Having two timing modes would be a solution as you proposed.
> > > > >
> > > > > 2008/2/1, Siegfried Goeschl <[EMAIL PROTECTED]
> > > > > <mailto:[EMAIL PROTECTED]>>:
> > > > >
> > > > > Hi Nicolas,
> > > > >
> > > > > a few thoughts
> > > > >
> > > > > +) I use dynamic proxies together with JAMon to measure the
> > > execution
> > > > > time of method invocations - ns would make a lot of sense here
> > > > > +) the execution times also depend on you JVM since you are
> > > using
> > > > > JRockit
> > > > > +) and finally it depends how often you start/stop a monitor
> > > > > +) retrotranslator will fail badly since System.nanotime() was
> > > > > introduced with Java 1.5
> > > > >
> > > > > Maybe the decision can be deferred until creating a monitor -
> > > the user
> > > > > decides whether to use ms or ns?
> > > > >
> > > > > Cheers,
> > > > >
> > > > > Siegfried Goeschl
> > > > >
> > > > > nicolas de loof wrote:
> > > > > > Hello,
> > > > > >
> > > > > > For commons-monitoring my first intent was to use
> > > > > System.nanotime() to
> > > > > > compute code performances. A simple bench [1] demonstrates
> > > that
> > > > > > System.currentTimeMillis is FAR quicker to return current
> > > time
> > > > > (on my
> > > > > > windows box [2]) :
> > > > > >
> > > > > > nanoseconds precision may be usefull for profilers, but is
> > > it
> > > > > for monitoring
> > > > > > purpose ?
> > > > > >
> > > > > >
> > > > > >
> > > > > > [1] 10000000 time (System.nanoTime() ) vs
> > > > > (System.currentTimeMillis()) :
> > > > > >
> > > > > > D:\projets\apache\trunks-sandbox\monitoring\target>java
> > > -server -cp
> > > > > > .\test-classes
> > > > > >
> > > org.apache.commons.monitoring.bench.CurrentTimeMillisVsNanoTime
> > > > > > nanotime took : 4683052742ns
> > > > > > currentTimeMillis took : 26907938ns
> > > > > >
> > > > > > [2]
> > > > > > D:\projets\apache\trunks-sandbox\monitoring\target>java
> > > -version
> > > > > > java version "1.6.0"
> > > > > > Java(TM) SE Runtime Environment (build 1.6.0-b105)
> > > > > > BEA JRockit(R) (build
> > > > > R27.2.0-131-78843-1.6.0-20070320-1457-windows-ia32,
> > > > > > compiled mode)
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > <mailto:[EMAIL PROTECTED]>
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > <mailto:[EMAIL PROTECTED]>
> > > > >
> > > > >
> > > >
> > > >
> > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
>