`
ljy325
  • 浏览: 17862 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

JAVA IO 文件拷贝性能测试-2009-03-13

阅读更多
今天做了java IO 与 NIO 拷贝文件的性能测试,发现NIO并不比IO快多少,甚至有时候比老IO慢。



以下是测试记录(用时毫秒记):

文件1大小:103858393
IO第1次用时 6718
文件1大小:103858393
IO第2次用时 1875
文件1大小:103858393
IO第3次用时 2766
文件1大小:103858393
IO第4次用时 2484
文件1大小:103858393
IO第5次用时 3672
文件1大小:103858393
IO第6次用时 2266
文件1大小:103858393
IO第7次用时 1828
文件1大小:103858393
IO第8次用时 2266
文件1大小:103858393
IO第9次用时 2453
文件1大小:103858393
IO第10次用时 2500
文件1大小:103858393
IO第11次用时 1937
文件1大小:103858393
IO第12次用时 2407
文件1大小:103858393
IO第13次用时 1875
文件1大小:103858393
IO第14次用时 3672
文件1大小:103858393
IO第15次用时 2109
文件1大小:103858393
IO第16次用时 1844
文件1大小:103858393
IO第17次用时 3500
文件1大小:103858393
IO第18次用时 2141
文件1大小:103858393
IO第19次用时 3859
文件1大小:103858393
IO第20次用时 1969

文件2大小:103920648
NIO第1次用时 7390
文件2大小:103920648
NIO第2次用时 1781
文件2大小:103920648
NIO第3次用时 1969
文件2大小:103920648
NIO第4次用时 2297
文件2大小:103920648
NIO第5次用时 1656
文件2大小:103920648
NIO第6次用时 1578
文件2大小:103920648
NIO第7次用时 2203
文件2大小:103920648
NIO第8次用时 1672
文件2大小:103920648
NIO第9次用时 1656
文件2大小:103920648
NIO第10次用时 2234
文件2大小:103920648
NIO第11次用时 1813
文件2大小:103920648
NIO第12次用时 1937
文件2大小:103920648
NIO第13次用时 3594
文件2大小:103920648
NIO第14次用时 1578
文件2大小:103920648
NIO第15次用时 2328
文件2大小:103920648
NIO第16次用时 1750
文件2大小:103920648
NIO第17次用时 1516
文件2大小:103920648
NIO第18次用时 2156
文件2大小:103920648
NIO第19次用时 1813
文件2大小:103920648
NIO第20次用时 1875


Nio代码
    public static void copyFileNew(File sourceFile, File destFile)  
                throws IOException {  
            if (!destFile.exists()) {  
                destFile.createNewFile();  
            }  
      
            FileChannel source = null;  
            FileChannel destination = null;  
            try {  
                source = new FileInputStream(sourceFile).getChannel();  
                destination = new FileOutputStream(destFile).getChannel();  
                destination.transferFrom(source, 0, source.size());  
            } finally {  
                if (source != null) {  
                    source.close();  
                }  
                if (destination != null) {  
                    destination.close();  
                }  
            }  
        }  

 



Io代码
    public static void copyFileOld(File source, File dest) throws IOException {  
            if (!dest.exists()) {  
                dest.createNewFile();  
            }  
            InputStream in = null;  
            OutputStream out = null;  
            try {  
                in = new FileInputStream(source);  
                out = new FileOutputStream(dest);  
      
                // Transfer bytes from in to out  
                byte[] buf = new byte[1024];  
                int len;  
                while ((len = in.read(buf)) > 0) {  
                    out.write(buf, 0, len);  
                }  
            } finally {  
                if (in != null) {  
                    in.close();  
                }  
                if (out != null) {  
                    out.close();  
                }  
            }  
        }  
2
1
分享到:
评论
3 楼 qq594848450 2015-07-21  
NIO的优势在于高并发场景下对多线程资源的合理利用,并不是在单线程中对比传统的阻塞IO读写速度有多快。
2 楼 ljy325 2015-07-08  
我也不知道到怎么回事,你可以自己测试一下,一般旧的没问题继续用旧的库,以前已经证明没问题了,性能也不差,新的nio不明白
1 楼 61308519 2015-07-08  
高手解释一下

相关推荐

    JAVA 的IO流的文件复制

    在Java编程语言中,IO(Input/Output)流是处理数据输入和输出的重要工具,尤其在文件操作中显得尤为重要。本篇文章将详细讲解如何使用Java的IO流进行文件复制,以及如何实现整个文件夹的复制,并检查复制是否成功。...

    MavenUtil 文件拷贝

    10. **测试**:为了确保MavenUtil的文件拷贝功能正确无误,通常需要编写单元测试和集成测试。例如,使用JUnit或TestNG框架,模拟不同的文件状态和系统环境,验证MavenUtil的正确性和健壮性。 以上就是关于...

    java的各种io操作

    Java的IO操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,包括读取文件、写入...同时,随着Java NIO(New IO)和NIO.2的引入,Java的IO性能和功能得到了显著提升,为开发者提供了更多高效和灵活的选择。

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    用Java实现的图片加密程序

    本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...

    jmter性能测试自动化环境搭建教程

    - 将各插件对应的`.jar`文件拷贝到`D:\tool\apache-jmeter-3.1\lib\ext`目录下。 - **添加其他必要文件**: - 将`ReportGen.jar`和`jmeter-plugins-manager-0.11.jar`也拷贝到上述目录。 #### 六、配置Jenkins任务...

    four_javafile_

    `java.io`包提供了许多类来支持文件操作,如`File`用于表示文件或目录,`FileInputStream`和`FileOutputStream`用于读写文件。程序的起点可能是创建`File`对象,分别代表源文件和目标文件,然后通过`FileInputStream...

    详解Java中IO字节流基本操作(复制文件)并测试性能

    Java中IO字节流基本操作(复制文件)并测试性能 Java中的IO字节流是一种基本的输入/输出操作,用于复制文件、读取文件、写入文件等操作。今天我们将详细介绍Java中IO字节流基本操作(复制文件)并测试性能。 Java...

    jetty1.3.3

    10. **性能优化**:Jetty 一直致力于性能优化,即使是较早的版本,也可能会包含一些性能提升的技术,如零拷贝(Zero-Copy)和直接缓冲区(Direct Buffer)。 使用 Jetty 1.3.3 时,开发者需要注意它的兼容性和安全...

    java-core-test

    Java核心测试知识点详解 在Java编程领域,"Java核心"是指Java语言的基础部分,包括语法、数据类型、控制结构、类与对象、异常处理、集合框架等关键概念。本资料着重于这些基础知识的复习,旨在帮助开发者巩固和提升...

    Hadoop本地调试NativeIO

    NativeIO是Hadoop的一个特性,它允许使用本地(系统)库进行I/O操作,以提高性能。 NativeIO主要包含两部分:libhadoop.so(或其他平台对应的动态链接库)和Hadoop的C++接口。这个功能使得Hadoop可以利用操作系统...

    java源码包3

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java源码包2

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    IO——test

    7. **IO工具类**:Java提供了一些内置的IO工具类,如Files类(在Java 7中引入),它可以简化很多文件操作,如拷贝、移动、删除文件等。 以上就是基于标题、标签和文件名推测的IO相关知识点,具体的学习内容和实践...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    阿里巴巴2010校园招聘技术类笔试试题(Java,搜索研发,C++,测试工程师)南京站.docx

    - **性能测试**:了解压力测试、负载测试、稳定性测试,使用Apache JMeter或LoadRunner等工具。 - **缺陷管理**:Bugzilla、JIRA等工具的使用,以及缺陷报告的编写规范。 以上只是部分可能的考点,实际试题可能会...

    java源码包4

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

Global site tag (gtag.js) - Google Analytics