Package com.aelitis.azureus.core.diskmanager.test

Source Code of com.aelitis.azureus.core.diskmanager.test.MemoryMappedFileTester

/*
* Created on Apr 26, 2004
* Created by Alon Rohter
* Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* AELITIS, SAS au capital de 46,603.30 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*
*/

package com.aelitis.azureus.core.diskmanager.test;

import java.io.*;
import java.nio.channels.*;

import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.DirectByteBuffer;
import org.gudy.azureus2.core3.util.DirectByteBufferPool;
import org.gudy.azureus2.core3.util.RandomUtils;

import com.aelitis.azureus.core.diskmanager.MemoryMappedFile;

/**
* @author MjrTom
*       2006/Jan/02:  use RandomUtils
*/

public class MemoryMappedFileTester {
  static long MAX_SIZE = 1L*1024*1024*1024;
  //static long MAX_SIZE = 237*1024*1024;
  static int BUFF_SIZE = 5*1024*1024;

  static DirectByteBuffer dbb = DirectByteBufferPool.getBuffer( DirectByteBuffer.AL_OTHER,BUFF_SIZE );
  static byte[] raw = new byte[ BUFF_SIZE ];
 
  public static void main(String[] args) {
    try {
      File fraf = new File( "e:\\fraf.bin" );
      File fchan = new File( "e:\\fchan.bin" );
      File fmapd = new File( "e:\\fmapd.bin" );
   
      RandomAccessFile raf = new RandomAccessFile( fraf, "rw" );
      FileChannel fc = new RandomAccessFile( fchan, "rw" ).getChannel();
      MemoryMappedFile mmf = new MemoryMappedFile( fmapd );
      mmf.setAccessMode( MemoryMappedFile.MODE_READ_WRITE );
    
      long written = 0;
      long traf = 0;
      long tchan = 0;
      long tmmf = 0;
      int loop = 1;
     
      while( written < MAX_SIZE ) {
        System.out.print("|")if (loop % 80 == 0) System.out.println();
        refreshBuffers();
        long start_pos = new Float(RandomUtils.nextFloat()*(MAX_SIZE-BUFF_SIZE)).longValue();
///////////////////////////////////////////////////////
        long start = System.currentTimeMillis();
        //raf.seek( start_pos );  raf.write( raw );
        traf += System.currentTimeMillis() - start;
///////////////////////////////////////////////////////
        start = System.currentTimeMillis();
        //fc.write( dbb.buff, start_pos );
        tchan += System.currentTimeMillis() - start;
///////////////////////////////////////////////////////
        start = System.currentTimeMillis();
        mmf.write( dbb, 0, start_pos, dbb.limit(DirectByteBuffer.SS_OTHER) );
        tmmf += System.currentTimeMillis() - start;
///////////////////////////////////////////////////////
        written += raw.length;
        loop++;
      }
     
      System.out.println();
      System.out.println("RandomAccessFile = " + traf);
      System.out.println("FileChannel = " + tchan);
      System.out.println("MemoryMappedFile = " + tmmf);
      System.out.println("Cache H: " +MemoryMappedFile.cache_hits+ " M: " +MemoryMappedFile.cache_misses);
     
   
    }
    catch (Throwable t) { Debug.printStackTrace( t ); }
  }
 

  private static void refreshBuffers() {
    RandomUtils.nextBytes( raw );
    dbb.clear(DirectByteBuffer.SS_OTHER);
    dbb.put( DirectByteBuffer.SS_OTHER,raw );
    dbb.flip(DirectByteBuffer.SS_OTHER);
  }
 

}
TOP

Related Classes of com.aelitis.azureus.core.diskmanager.test.MemoryMappedFileTester

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.