`

Driect-nonDricect 读取文件速度

 
阅读更多

 

fos.write() 7965 ms

fileChannel.transferTo 170 ms

 

MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, length);  
raf = new RandomAccessFile( metaFile, "rw" );
FileChannel channel = raf.getChannel();
channel.force( true );	//強制將所有對此通道的檔案更新寫入包含該檔案的存儲設備中。如果此通道的檔案駐留在本地存儲設備上,則此方法返回時可保證,否则不保证。
MappedByteBuffer buf = channel.map( FileChannel.MapMode.READ_WRITE, 0, metadataMaxLenght );

 

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;

public class TestFileChannel {
    public static void main( String[] args ) throws Exception {
        
    }
    
    public static void a() throws Exception{
        File file = new File("d:/bcw-200.log");
        FileInputStream fis = new FileInputStream( file );
        File outFile = new File("d:/bcw-201.log");
        FileOutputStream fos = new FileOutputStream( outFile );
        int byteToRead = 1024;
        byte[] buff = new byte[byteToRead];
//        int byteRead = 0;
//        while(true){
//            int result = fis.read( bb, byteRead, byteToRead - byteRead );
//            if(result==-1){
//                break;
//            }
//            byteRead += result;
//        }
        long start = System.currentTimeMillis();
        while(true){
            int result = fis.read( buff );
            fos.write( buff );
            if(result == -1){
                break;
            }
        }
        System.out.println(System.currentTimeMillis() - start);
        fis.close();
        fos.close();
        System.out.println(System.currentTimeMillis() - start);
    }
    
    public static void b() throws Exception{
        File file = new File("d:/bcw-200.log");
        FileInputStream fis = new FileInputStream( file );
        File outFile = new File("d:/bcw-202.log");
        FileOutputStream fos = new FileOutputStream( outFile );
        FileChannel in = fis.getChannel();
        FileChannel out = fos.getChannel();
        long start = System.currentTimeMillis();
        in.transferTo( 0, file.length(), out );
        System.out.println(System.currentTimeMillis() - start);
        in.close();
        out.close();
        System.out.println(System.currentTimeMillis() - start);
    }
    
    public static void c() throws Exception{
        File file = new File("d:/bcw-200.log");
        FileInputStream fis = new FileInputStream( file );
        File outFile = new File("d:/bcw-202.log");
        FileOutputStream fos = new FileOutputStream( outFile );
        FileChannel in = fis.getChannel();
        FileChannel out = fos.getChannel();
        RandomAccessFile raf = new RandomAccessFile( file, "rw" );
       
        long start = System.currentTimeMillis();
        in.transferTo( 0, file.length(), out );
        System.out.println(System.currentTimeMillis() - start);
        in.close();
        out.close();
        System.out.println(System.currentTimeMillis() - start);
    }
}

 

分享到:
评论

相关推荐

    wifi p2p driect 介绍

    ### Wi-Fi Direct (P2P) 技术详解 #### Wi-Fi Direct 概述 Wi-Fi Direct(也称为Wi-Fi P2P)是一项...其通过简化设置流程、提高连接速度及灵活性等特点,正逐步改变人们的生活方式,并将在未来发挥更加重要的作用。

    Directx Input输入库实现

    这种方法减少了延迟,提高了响应速度,特别适合游戏和其他实时应用。 2. **事件注册**:在DirectInput中,事件注册是通过创建设备对象并设置数据格式完成的。开发者可以为特定的输入事件(例如,按键按下或鼠标移动...

    Direct3d地形

    Direct3D实现3维地形 有详细的注释 并能够实现自由漫游

    硬盘接口类型

    IDE 硬盘的传输模式有三种:PIO(Programmed I/O)模式、DMA(Driect Memory Access)模式和 Ultra DMA 模式。 PIO 模式的最大弊端是耗用极大量的 CPU 资源。以 PIO 模式运行的 IDE 接口,数据传输率达 3.3MB/s(PIO ...

    Direct2D绘制多种风格的线条

    压缩包内的"Direct2D绘制多种风格线条.cpp"文件,很可能包含了示例代码,展示了如何设置这些属性并绘制不同风格的线条。代码中可能使用了CreateStrokeStyle方法创建自定义的线条样式,并使用DrawLine方法来绘制指定...

    WIN7 DX12提取

    3. **资源绑定理论**:DX12引入了新的资源绑定模型,允许更多的纹理、缓冲区和其他资源同时绑定到着色器,提高了渲染速度和灵活性。 4. **分层着色器模型**:新模型允许更灵活的着色器组织,便于开发者优化代码,...

    DirectRabbitConfig.java

    rabbitMq中的driect模式,在服务端生产者可以直接使用此模式,对应消费端模式获取对接的模型消息,同时在生成的接口中可以直接使用此工具,方便适用!

    串口通讯DLL动态库源码

    //Don't Start Thread,Driect Communicate With Com Port,Please Use These Functions //不启动线程,直接与串口进行通信,请调用以下的函数 BOOL PS_CommInit(); BOOL PS_SendMessageToComm(char* szSendMsg,int ...

    Direct9.0 着色

    Direct9.0着色是DirectX图形编程中的一个重要概念,它是通过编程控制游戏或应用程序中图形的外观,赋予...在实际项目中,配合提供的"DirectX_Color"压缩包文件,可以进一步学习和实践Direct9.0中的颜色处理和着色技巧。

Global site tag (gtag.js) - Google Analytics