`
absolute
  • 浏览: 190190 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

内存映射文件性能对比测试

 
阅读更多

今天对比了一下内存映射文件的性能和普通文件的测试,不比不知道,一比吓一跳啊。差距太大了。

 

 

public class FileTest {

	static int length = 0x8000000; // 128 Mb

	public void doMemTest() {
		try {
			long start = System.currentTimeMillis();
			FileChannel fc = new RandomAccessFile("e:/test/test.dat", "rw").getChannel();
			MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, length);
			for (int i = 0; i < length; i++) {  
	            out.put((byte) 'x');  
	        } 
			long end = System.currentTimeMillis();
			fc.close();
			System.out.println(end - start);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void doGeneralTest() {
		try {
			long start = System.currentTimeMillis();
			RandomAccessFile fc = new RandomAccessFile("e:/test/test.dat", "rw");
			for (int i = 0; i < length; i++) {  
	            fc.write((byte) 'x');
	        } 
			long end = System.currentTimeMillis();
			
			System.out.println(end - start);
			fc.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws Exception {
		FileTest t = new FileTest();
//		t.doMemTest();
		t.doGeneralTest();
	}
}

 

 

doMemtest这个方法,1000多毫秒的样子,doGeneralTest这个基本就没跑完过。

分享到:
评论
1 楼 mysh 2012-02-03  
这个不能说明内存映射比较快吧, 只能说明 nio 比 io 快, 要比较的话起码两个都用直接写数据块的方式, put(byte[]) write(byte[])

相关推荐

    内存映射I/O大文件性能测试代码

    在描述中提到的性能测试,是对比了内存映射I/O和系统调用`write`来写入500MB文件的性能差异。`write`系统调用是传统的I/O操作方式,它会将数据从用户空间拷贝到内核空间,然后由内核完成实际的磁盘写操作。而内存...

    PB中几种写文件方式性能测试,有兴趣的可以看看(PB125)

    3. **文件映射**:在Windows系统中,可以使用内存映射文件(Memory-Mapped File)技术,将文件直接映射到进程的虚拟地址空间。这种方法适用于大数据量的读写,可以实现多进程间的共享,但不适用于频繁的小数据块写入...

    java 解析XML性能对比分析Demo

    在"Java解析XML性能对比分析Demo"中,你可以通过运行这些解析器的示例代码,观察它们在处理相同XML文件时的内存占用、处理速度等指标,以了解哪种解析方式更适合你的项目需求。例如,如果你处理的XML文件较小,DOM或...

    squid、varnish、ngx_cache的性能测试对比报告

    file模式是将文件映射到内存中,本质与malloc类似,但不支持持久化存储;persistent模式目前还处于实验阶段。Varnish适合缓存小文件,但对于大文件(如视频文件)的缓存并不具备优势。由于Varnish缺乏streaming模式...

    iBATIS3与JDBC性能对比

    在进行性能对比时,我们可以创建一个简单的dbtest项目,通过编写测试用例,对比iBATIS3和JDBC在相同条件下的执行速度、内存占用以及数据库连接的创建和释放时间。通过dbtest,可以量化分析两种方式的性能差距,并...

    内存占用分析工具

    1. **内存页面类型**:RAMMap可以显示各种类型的内存页面,如已缓存文件、已映射文件、空闲页面、工作集等,这有助于识别哪些进程或系统组件占用了大量内存。 2. **实时查看**:用户可以实时监控内存使用情况,了解...

    dotnet C# 链表和字典的性能对比.rar

    在“dotnet C# 链表和字典的性能对比.md”文件中,可能包含了以下内容: 1. 两种数据结构的定义和工作原理 2. 对比插入、删除、查找等操作的时间复杂度 3. 实际案例分析,展示不同场景下如何选择链表或字典 4. 代码...

    ACE文件操作

    通过对ACE文件操作的多种方法的探讨,我们可以看到,从最基础的逐字符读写,到使用缓冲区的块读写,再到利用内存映射文件技术,每种方法都有其适用场景和优劣。在实际应用中,开发者应根据文件大小、系统资源和性能...

    大数据量的excel文件读取——excel2007

    8. **内存映射文件**: 在某些情况下,Windows系统中的内存映射文件(Memory-Mapped Files)可以提供一种高效读取大文件的方法。通过映射文件到内存,可以像访问内存一样访问文件内容,但实际数据仍存储在硬盘上。 9...

    Java中多种写文件方式的效率对比实验(图)

     近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出、字符流输出、内存文件映射输出。前两种又可以分为带buffer及不带...

    hadoop2.7.3+hive1.2.1+spark2.0.1性能测试

    - **Spark 性能测试:** 运行Spark应用程序,对比其与MapReduce的性能差异。 **5.3 数据收集与分析** - 收集测试过程中的各项指标,如处理时间、CPU利用率、内存使用情况等。 - 分析测试结果,识别瓶颈和优化点。 ...

    nhibernate与ibatis速度对比测试项目

    NHibernate和iBatis是两种广泛使用的对象关系映射(ORM)框架,它们在Java和.NET开发中都有着广泛的运用。本项目旨在通过压力测试对比...同时,了解这种性能对比也有助于提升对数据库操作和ORM框架原理的理解。

    Bboss和xstream序列化反序列化性能对比1

    测试环境是基于联想ThinkPad SL400,操作系统为32位Windows XP Professional SP3,内存2GB,CPU为Intel Core 2 Duo T5870,主频2GHz。开发环境为MyEclipse 8.0,使用JDK 1.5.0_06和JUnit 4进行测试。 测试分为不同...

    探寻C++最快的读取文件的方案 C++ IO优化

    3. `mmap`映射文件到内存的方法提供了最快的整体读取速度,尤其适合处理大型文件。 综上所述,根据实际需求选择合适的读取方式非常重要。对于较小的数据量,`cin`和`scanf`都是不错的选择;而对于大数据量,考虑...

    龙龙内存遍历工具 (1).rar

    1. **内存映射**:龙龙内存遍历工具能够显示当前进程的内存映射情况,包括各个内存区域的起始地址、结束地址、大小、权限等信息,这对于了解程序的内存布局非常有帮助。 2. **内存搜索**:用户可以使用该工具搜索...

    mmu.tar.gz_ARM MMU_arm ram测试

    4. **内存性能评估**:通过对比测试,了解内部RAM与外部RAM在速度和响应时间上的差异,以及MMU映射对性能的影响。 5. **嵌入式编程实践**:涉及嵌入式系统的编程技巧,如中断处理、内存管理、设备驱动等。 6. **LED...

    hadoop处理海小文件的改进方法

    1. **性能对比**:与原生HDFS以及现有的HAR(Hadoop Archive)方案进行对比,评估改进方案在元数据管理、I/O性能等方面的提升情况。 2. **可扩展性分析**:测试不同规模的数据集下系统的表现,尤其是当小文件数量...

Global site tag (gtag.js) - Google Analytics