Unmapping MappedByteBuffer
    Johannes.Lichtenberger 
    Johannes.Lichtenberger at uni-konstanz.de
       
    Fri Nov  2 21:28:05 PDT 2012
    
    
  
On 11/03/2012 03:59 AM, Zhong Yu wrote:>      static public void 
test1(int cap, int repeat) throws Exception
 >      {
 >          int sum=0;
 >          long time = System.currentTimeMillis();
 >          ByteBuffer bb = ByteBuffer.allocateDirect(cap);
 >          for(int r=0; r<repeat; r++)
 >          {
 >              for(int i=0; i<cap; i++)
 >              {
 >                  sum += bb.get(i);
 >              }
 >          }
 >          time = System.currentTimeMillis() - time;
 >          System.out.printf("time=%,d, sum=%,d %n", time, sum);
 >      }
 >      static public void test2(int cap, int repeat) throws Exception
 >      {
 >          int sum=0;
 >          long time = System.currentTimeMillis();
 >          ByteBuffer bb0 = ByteBuffer.allocateDirect(cap);
 >          SingleOwnerByteBuffer bb = new SingleOwnerByteBuffer(bb0);
 >          bb.own();
 >          for(int r=0; r<repeat; r++)
 >          {
 >              for(int i=0; i<cap; i++)
 >              {
 >                  sum += bb.get(i);
 >              }
 >          }
 >          bb.disown();
 >          time = System.currentTimeMillis() - time;
 >          System.out.printf("time=%,d, sum=%,d %n", time, sum);
 >      }
 > }
Is the use of System.currentTimeMills() instead of System.nanoTime() 
deliberately used? I'd use nanoTime() as always suggested (because 
currentTimeMills() depends on wallclock time which is sometimes 
corrected). Otherwise it might even cause negative values in some cases...
kind regards,
Johannes
    
    
More information about the nio-dev
mailing list