`

File Test--------- 之性能优化详解

    博客分类:
  • JAVA
 
阅读更多

import java.io.File;

import java.io.FileOutputStream;

import java.io.*;

 

public class FileTest {

 

    public FileTest() {

 

    }

 

    public static void main(String[] args) {

 

        FileOutputStream out = null;

 

        FileOutputStream outSTr = null;

 

        BufferedOutputStream Buff=null;

 

        FileWriter fw = null;

 

        int count=1000;//写文件行数

 

        try {

 

            out = new FileOutputStream(new File("C:/add.txt"));

 

            long begin = System.currentTimeMillis();

 

            for (int i = 0; i < count; i++) {

 

                out.write("测试java 文件操作\r\n".getBytes());

 

            }

 

            out.close();

 

            long end = System.currentTimeMillis();

 

            System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒");

 

 

 

            outSTr = new FileOutputStream(new File("C:/add0.txt"));

 

             Buff=new BufferedOutputStream(outSTr);

 

            long begin0 = System.currentTimeMillis();

 

            for (int i = 0; i < count; i++) {

 

                Buff.write("测试java 文件操作\r\n".getBytes());

 

            }

 

            Buff.flush();

 

            Buff.close();

 

            long end0 = System.currentTimeMillis();

 

            System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0) + " 豪秒");

 

 

 

 

 

            fw = new FileWriter("C:/add2.txt");

 

            long begin3 = System.currentTimeMillis();

 

            for (int i = 0; i < count; i++) {

 

                fw.write("测试java 文件操作\r\n");

 

            }

 

                        fw.close();

 

            long end3 = System.currentTimeMillis();

 

            System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");

 

 

 

        } catch (Exception e) {

 

            e.printStackTrace();

 

        }

 

        finally {

 

            try {

 

                fw.close();

 

                Buff.close();

 

                outSTr.close();

 

                out.close();

 

            } catch (Exception e) {

 

                e.printStackTrace();

 

            }

 

        }

 

    }

 

}    

 

 

 

以下结果经过多次执行,取常出现的数据,由于只是简单比较,不做具体统计。

 

1.当count=1000的,即写文件1000行的时候,写出的文件大小为18.5KB:

FileOutputStream执行耗时:46 豪秒

BufferedOutputStream执行耗时:31 豪秒

FileWriter执行耗时:15 豪秒

 

2.当count=10000的,即写文件10000行的时候,写出的文件大小为185KB:

FileOutputStream执行耗时:188 豪秒

BufferedOutputStream执行耗时:32 豪秒

FileWriter执行耗时:16 豪秒

 

3.当count=100000的,即写文件100000行的时候,写出的文件大小为1856KB:

FileOutputStream执行耗时:1266 豪秒

BufferedOutputStream执行耗时:125 豪秒

FileWriter执行耗时:93 豪秒

 

4.当count=1000000的,即写文件1000000行的时候,写出的文件大小为18555KB:

FileOutputStream执行耗时:12063 豪秒

BufferedOutputStream执行耗时:1484 豪秒

FileWriter执行耗时:969 豪秒

 

   由以上数据可以看到,假如不用缓冲流BufferedOutputStream,FileOutputStream写文件的鲁棒性是很不好的。当写 1000000行的文件的时候,FileOutputStream比FileWriter要慢11094毫秒(11秒), BufferedOutputStream比FileWriter慢515毫秒。

   不要小看这几秒的时间。当操作的数据量很大的时候,这点性能的差距就会很大了。在通用数据迁移工具导出数据库2千万条记录生成sql脚本文件的时候,性能相差10分钟以上。


分享到:
评论
2 楼 lgs0626 2011-03-02  
ray_linn 写道
请翻翻书,查看一下啥叫鲁棒性? 你的Fileoutputstream崩溃吗?

鲁棒性就是系统的健壮性。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。
1 楼 ray_linn 2011-03-01  
请翻翻书,查看一下啥叫鲁棒性? 你的Fileoutputstream崩溃吗?

相关推荐

    Write To File Speed Test - 副本_labview_

    "Write To File Speed Test - 副本_labview_" 是一个专门针对LabVIEW的文件读写速度测试程序,旨在帮助用户了解和优化他们的文件操作性能。 首先,我们需要理解LabVIEW中的文件I/O操作。LabVIEW提供了丰富的文件...

    MSCOCO test2017数据集的信息文件 image_info_test2017

    总结,`image_info_test2017`是MSCOCO数据集中一个关键的组成部分,为评估和优化计算机视觉模型提供了基础,尤其对于那些需要在大量多样化图像上测试性能的任务。理解和利用这个文件中的信息对于推动计算机视觉技术...

    java-core-test

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

    详解webpack之图片引入-增强的file-loader:url-loader

    **Webpack中的图片引入:增强版File Loader - URL Loader** 在前端开发中,Webpack是一个非常重要的模块打包工具,它能够处理JavaScript、CSS以及其他静态资源。在处理图片资源时,`url-loader`是一个非常实用的...

    详解Webpack loader 之 file-loader

    test: /\.(png|jpg|gif)$/, use: [ { loader: 'file-loader', options: {} } ] } ] } } ``` 默认情况下,`file-loader` 会生成一个基于文件内容 MD5 哈希值的新文件名,保持原始扩展名,例如 `bd62c377ad...

    commons-fileupload详解

    ### commons-fileupload详解 #### 一、概述 `commons-fileupload`是Apache Commons项目下的一个子项目,主要用于处理HTTP请求中的文件上传。该组件提供了一种简单高效的方式来处理客户端发送的`multipart/form-...

    Cgi-bin 30个漏洞+使用方法.txt

    ### Cgi-bin 30个漏洞及使用方法详解 #### 一、概述 在Web开发领域,特别是基于Perl语言的动态网页开发中,CGI(Common Gateway Interface)扮演着重要的角色。然而,随着互联网技术的发展,CGI也逐渐暴露出一系列...

    linux grep命令详解

    - 示例:`grep -L "panda" file testfile`,仅列出不包含 "panda" 的文件名。 - **-n, --line-number** 显示匹配行及其行号。 - 示例:`grep -n "panda" file`,显示 `file` 中包含 "panda" 的行及其行号。 - ...

    fio-3.25-x64_windows.zip

    **FIO工具详解** FIO(Flexible I/O Tester)是一款强大的磁盘性能测试工具,它在各种操作系统上广泛使用,包括Linux、Windows等。FIO的设计目标是提供一个灵活的平台,用户可以通过自定义参数来测试存储系统的I/O...

    shell命令详解-精编版

    ### Shell命令详解精编版 #### 一、Shell概述与分类 **Shell** 是 Linux 操作系统中的一个重要组成部分,它充当用户与操作系统之间的接口。在 Linux 中,最常用的 Shell 类型是 Bash(Bourne Again Shell)。此外...

    mmlab-train-test

    《基于VScode的MMDetection训练与测试流程详解》 在计算机视觉领域,MMDetection是一个广泛使用的开源目标检测框架,由MMCV和MMLAB团队开发。它提供了丰富的模型库,支持多种检测任务,包括单阶段和两阶段检测器。...

    Linux命令file命令

    ### Linux命令file命令详解 #### 一、命令概述 `file`命令是Linux系统中一个非常实用的工具,主要用于识别文件类型。与Windows系统通过文件扩展名来判断不同,`file`命令通过读取文件头部的信息来判断文件类型,...

    PHP中spl-autoload-register()函数用法实例详解-.pdf

    PHP 中 spl_autoload_register() 函数用法实例详解 spl_autoload_register() 函数是 PHP 中用于自动加载类的函数,作用类似于 __autoload 函数。下面我们将详细介绍 spl_autoload_register() 函数的用法实例。 一...

    maven基本命令详解

    ### Maven基本命令详解 Maven 是一款非常强大的 Java 项目构建工具,它通过一系列的预定义生命周期和插件,简化了项目的构建、依赖管理和部署等工作。本文将对 Maven 的一些常用基本命令进行详细介绍。 #### 1. ...

    lmbench3-master.zip用于测试系统性能的测试套件。

    **lmbench3大师级详解:测试系统性能的利器** `lmbench3-master.zip` 是一个包含了`lmbench3`的源码版本,它是一个广泛使用的、开源的、跨平台的系统性能测试工具。这个测试套件设计用于测量各种微架构级别的系统...

    neo4j-admin import导入工具csv导入及参数说明

    - 示例:`--report-file=test_imports.report` - 默认值为 `import.report`。 - 解释:报告文件将包含有关导入过程的详细信息,包括成功导入的记录数量以及任何可能的问题。 - **--nodes**: 指定节点CSV文件的...

    bootstrap-fileinput使用例子

    ### Bootstrap Fileinput 使用详解 #### 一、简介 Bootstrap Fileinput 是一款基于 jQuery 的插件,用于增强 HTML 文件上传功能的交互性和美观性。它利用了 Bootstrap 的样式库,并提供了丰富的自定义选项来满足...

Global site tag (gtag.js) - Google Analytics