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