`
wutao8818
  • 浏览: 619890 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

测试NIO性能

    博客分类:
  • io
阅读更多

时间(ms)
文件大小(byte)
Buffer(byte)
434
603900
10000
0
0
1000
0
46
100
0
188
50
0
281
5
0
2406
1
47
12000

java 代码
 
  1. package com;   
  2.   
  3. import java.io.File;   
  4. import java.io.FileInputStream;   
  5. import java.io.FileOutputStream;   
  6. import java.io.IOException;   
  7. import java.nio.ByteBuffer;   
  8. import java.nio.channels.FileChannel;   
  9.   
  10. import junit.framework.TestCase;   
  11.   
  12. /**  
  13.  * NIO read write test  
  14.  *   
  15.  * @author wutao  
  16.  *   
  17.  */  
  18. public class NioDemo extends TestCase {   
  19.   
  20.     public void testRead() throws IOException {   
  21.   
  22.         int[] sizes = { 1000010001005051 };   
  23.   
  24.         // Arrays.sort(sizes);   
  25.   
  26.         System.out.println(new File("text.txt").length());   
  27.   
  28.         for (int i = 0; i < sizes.length; i++) {   
  29.   
  30.             int size = sizes[i];   
  31.   
  32.             FileInputStream fins = new FileInputStream("text.txt");   
  33.   
  34.             FileChannel fc = fins.getChannel();   
  35.   
  36.             if (!new File("text2.txt").exists()) {   
  37.                 new File("text2.txt").createNewFile();   
  38.             }   
  39.             ByteBuffer buffer = ByteBuffer.allocate(size);   
  40.   
  41.             FileOutputStream fouts = new FileOutputStream("text2.txt");   
  42.             FileChannel fc2 = fouts.getChannel();   
  43.   
  44.             long start = System.currentTimeMillis();   
  45.   
  46.             while (true) {   
  47.                 buffer.clear();   
  48.                 int r = fc.read(buffer);   
  49.                 if (r == -1) {   
  50.                     break;   
  51.                 }   
  52.                 buffer.flip();   
  53.                 fc2.write(buffer);   
  54.             }   
  55.   
  56.             long end = System.currentTimeMillis();   
  57.   
  58.             System.out.println("---------" + size + "---------");   
  59.             System.out.println(end - start);   
  60.             fc.close();   
  61.             fc2.close();   
  62.             fins.close();   
  63.             fouts.close();   
  64.         }   
  65.     }   
  66. }   

 

Book Cover

Java™ I/O, 2nd Edition
By Elliotte Rusty Harold
...............................................
Publisher: O'Reilly
Pub Date: May 2006
Print ISBN-10: 0-596-52750-0
Print ISBN-13: 978-0-59-652750-1
Pages: 726

java 代码
 
  1. import java.io.*;   
  2. import java.nio.*;   
  3. import java.nio.channels.*;   
  4. public class NIOCopier {   
  5.   public static void main(String[] args) throws IOException {   
  6.     FileInputStream inFile = new FileInputStream(args[0]);   
  7.     FileOutputStream outFile = new FileOutputStream(args[1]);   
  8.     FileChannel inChannel = inFile.getChannel( );   
  9.     FileChannel outChannel = outFile.getChannel( );   
  10.     for (ByteBuffer buffer = ByteBuffer.allocate(1024*1024);   
  11.     inChannel.read(buffer) != -1;   
  12.     buffer.clear( )) {   
  13.       buffer.flip( );   
  14.       while (buffer.hasRemaining( )) outChannel.write(buffer);   
  15.     }   
  16.     inChannel.close( );   
  17.     outChannel.close( );   
  18.   }   
  19. }   
  20.   

 

In a very unscientific test, copying one large (4.3-GB) file on one platform (a dual 2.5-GHz PowerMac G5 running Mac OS X 10.4.1) using traditional I/O with buffered streams and an 8192-byte buffer took 305 seconds. Expanding and reducing the buffer size didn't shift the overall numbers more than 5% and if anything tended to increase the time to copy. (Using a one-megabyte buffer like Example 14-1's actually increased the time to over 23 minutes.) Using new I/O as implemented in Example 14-1 was about 16% faster, at 255 seconds. A straight Finder copy took 197 seconds. Using the Unix cp command actually took 312 seconds, so the Finder is doing some surprising optimizations under the hood.

 

 

分享到:
评论

相关推荐

    java nio与io性能测试

    `io与nio性能测试.txt`文件可能包含了实际运行的性能测试结果,包括平均时间、吞吐量等指标。这种测试可能涉及多次运行,以减少偶然因素的影响。通常,NIO在处理大量数据或并发I/O操作时表现更好,因为它允许程序在...

    Java NIO测试示例

    在实际应用中,Java NIO通常用于高性能的服务器编程,例如在开发聊天服务器、Web服务器或游戏服务器时,可以利用其高效的并发处理能力。然而,NIO的API相对复杂,学习曲线较陡峭,需要花费一定时间去理解和实践。...

    Java NIO与IO性能对比分析.pdf

    在性能对比测试中,实验结果表明,基于NIO的新服务器模型在处理高并发时,平均响应时间仅为2.09毫秒,且CPU占用率保持在68.5%的较低水平。与之相比,传统IO服务器模型在处理并发流量时,不仅性能上无法达到新模型的...

    默蓝网络通信测试工具(NIOSocket工具)支持TCP/IP和HTTP通信-网络通信开发人员必备

    《网络通信测试与Java NIO Socket编程详解》 在信息技术高速发展的今天,网络通信成为了软件开发中的重要一环。为了确保网络应用的稳定性和效率,网络通信测试工具扮演了不可或缺的角色。"默蓝网络通信测试工具(NIO...

    nio压力测试

    "nio-benchmark"显然是一项针对NIO性能的压力测试,旨在评估和优化NIO在高负载环境下的表现。 在进行NIO压力测试时,我们通常关注以下几个核心知识点: 1. **通道(Channels)与缓冲区(Buffers)**:NIO的核心...

    基于MINA构建高性能的NIO应用

    ### 基于MINA构建高性能的NIO应用 #### 概述 MINA作为一款优秀的客户端/服务器架构下的Java服务器框架,凭借其强大的功能和灵活性,在开发高性能网络应用程序方面表现突出。本文将深入探讨MINA的核心概念、优势...

    NiO/TiO2复合结构的制备及其电化学性能研究

    随后,通过循环伏安法(CV)和恒电流充放电法对NiO/TiO2复合结构的电化学性能进行了测试。 实验结果显示,NiO的沉积量与前驱体液中Ni(NO3)2·6H2O的浓度成正比,随着浓度的增加,比电容值也会相应提升。然而,当浓度...

    loadrunner性能测试.docx

    性能测试流程通常包括四个步骤:性能测试需求分析、性能测试计划、性能测试准备和性能测试执行。在性能测试需求分析阶段,需要确定系统的吞吐量目标、机器性能参数和关联系统。在性能测试计划阶段,需要制定测试计划...

    TiO2/NiO复合中空纳米纤维的制备及其光催化性能

    4. 光催化性能的测试:以亚甲基蓝作为目标污染物,在紫外光照射下测试了TiO2/NiO复合中空纳米纤维的催化降解率。光催化是一种利用光能促使特定化学反应进行的过程,TiO2和NiO这两种材料都具有光催化性能。 描述中...

    NiO纳米电池材料的制备及电化学性能研究

    在200℃下用溶剂热的方式将醋酸镍热分解,引入PVP活性剂,得到由3~5nm厚的薄片组成的直径约为100nm NiO中空球,通过改变PVP的...电化学测试NiO中空球具有823mA’h/g的放电容量,而且这些中空球也显示慢的容量衰退速度。

    JAVA IO and NIO

    Java NIO是在Java 1.4引入的新特性,它提供了一种非阻塞的I/O模型,极大地提高了程序的并发性能。NIO的核心组件包括: 1. **通道(Channel)**:通道类似于流,但它们可以同时进行读写操作,并且可以与多个缓冲区...

    java nio 聊天室源码

    Java NIO(New IO)是Java 1.4版本引入的一个新模块,全称为New Input/Output,是对传统IO API的扩展。它提供了一种更高效、更具选择性的IO操作方式,尤其适用于高并发和大数据处理场景。在这个“java nio 聊天室...

    NiO掺杂对菱镁矿烧结性能的影响.docx

    在研究NiO掺杂对菱镁矿烧结性能的影响时,首先要注意到的是,NiO作为一种添加剂,对菱镁矿的烧结性能并非产生单一的线性影响,而是存在一个最佳掺杂量。在一定范围内,NiO的加入可以显著改善菱镁矿的烧结性能,如...

    网络与nio

    标题中的“网络与nio”指的是Java的非阻塞I/O(Non-blocking Input/Output),它是一种高效的I/O处理...在实践中,需要注意的是,虽然NIO提供了更高的并发性能,但它的编程模型相对复杂,需要更深入的理解和调试技巧。

    Netty性能测试

    在“Netty性能测试”中,我们关注的是Netty在处理并发请求时的能力,以及它作为RPC(远程过程调用)框架的表现。 Netty 的高性能主要体现在以下几个方面: 1. **异步IO模型**:Netty采用了NIO(非阻塞I/O)模型,...

    talent-nio3.0.0备份

    而“工具”可能包括构建工具(如Maven,对应的配置文件为pom.xml)、调试工具、性能分析工具等,这些工具可以帮助开发者更有效地管理和维护项目。 【文件名称列表】中的"pom.xml"是Apache Maven项目的配置文件,它...

    使用Java NIO编写高性能的服务器.doc

    /** 测试文件下载的NIOServer */ public class NIOServer { static int BLOCK = 4096; // 每次发送的数据块大小 // 处理与客户端的交互 public class HandleClient implements Runnable { // ... } public ...

Global site tag (gtag.js) - Google Analytics