今天对比了一下内存映射文件的性能和普通文件的测试,不比不知道,一比吓一跳啊。差距太大了。
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这个基本就没跑完过。
分享到:
相关推荐
在描述中提到的性能测试,是对比了内存映射I/O和系统调用`write`来写入500MB文件的性能差异。`write`系统调用是传统的I/O操作方式,它会将数据从用户空间拷贝到内核空间,然后由内核完成实际的磁盘写操作。而内存...
3. **文件映射**:在Windows系统中,可以使用内存映射文件(Memory-Mapped File)技术,将文件直接映射到进程的虚拟地址空间。这种方法适用于大数据量的读写,可以实现多进程间的共享,但不适用于频繁的小数据块写入...
在"Java解析XML性能对比分析Demo"中,你可以通过运行这些解析器的示例代码,观察它们在处理相同XML文件时的内存占用、处理速度等指标,以了解哪种解析方式更适合你的项目需求。例如,如果你处理的XML文件较小,DOM或...
file模式是将文件映射到内存中,本质与malloc类似,但不支持持久化存储;persistent模式目前还处于实验阶段。Varnish适合缓存小文件,但对于大文件(如视频文件)的缓存并不具备优势。由于Varnish缺乏streaming模式...
在进行性能对比时,我们可以创建一个简单的dbtest项目,通过编写测试用例,对比iBATIS3和JDBC在相同条件下的执行速度、内存占用以及数据库连接的创建和释放时间。通过dbtest,可以量化分析两种方式的性能差距,并...
1. **内存页面类型**:RAMMap可以显示各种类型的内存页面,如已缓存文件、已映射文件、空闲页面、工作集等,这有助于识别哪些进程或系统组件占用了大量内存。 2. **实时查看**:用户可以实时监控内存使用情况,了解...
在“dotnet C# 链表和字典的性能对比.md”文件中,可能包含了以下内容: 1. 两种数据结构的定义和工作原理 2. 对比插入、删除、查找等操作的时间复杂度 3. 实际案例分析,展示不同场景下如何选择链表或字典 4. 代码...
通过对ACE文件操作的多种方法的探讨,我们可以看到,从最基础的逐字符读写,到使用缓冲区的块读写,再到利用内存映射文件技术,每种方法都有其适用场景和优劣。在实际应用中,开发者应根据文件大小、系统资源和性能...
8. **内存映射文件**: 在某些情况下,Windows系统中的内存映射文件(Memory-Mapped Files)可以提供一种高效读取大文件的方法。通过映射文件到内存,可以像访问内存一样访问文件内容,但实际数据仍存储在硬盘上。 9...
近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出、字符流输出、内存文件映射输出。前两种又可以分为带buffer及不带...
- **Spark 性能测试:** 运行Spark应用程序,对比其与MapReduce的性能差异。 **5.3 数据收集与分析** - 收集测试过程中的各项指标,如处理时间、CPU利用率、内存使用情况等。 - 分析测试结果,识别瓶颈和优化点。 ...
NHibernate和iBatis是两种广泛使用的对象关系映射(ORM)框架,它们在Java和.NET开发中都有着广泛的运用。本项目旨在通过压力测试对比...同时,了解这种性能对比也有助于提升对数据库操作和ORM框架原理的理解。
测试环境是基于联想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进行测试。 测试分为不同...
3. `mmap`映射文件到内存的方法提供了最快的整体读取速度,尤其适合处理大型文件。 综上所述,根据实际需求选择合适的读取方式非常重要。对于较小的数据量,`cin`和`scanf`都是不错的选择;而对于大数据量,考虑...
1. **内存映射**:龙龙内存遍历工具能够显示当前进程的内存映射情况,包括各个内存区域的起始地址、结束地址、大小、权限等信息,这对于了解程序的内存布局非常有帮助。 2. **内存搜索**:用户可以使用该工具搜索...
4. **内存性能评估**:通过对比测试,了解内部RAM与外部RAM在速度和响应时间上的差异,以及MMU映射对性能的影响。 5. **嵌入式编程实践**:涉及嵌入式系统的编程技巧,如中断处理、内存管理、设备驱动等。 6. **LED...
1. **性能对比**:与原生HDFS以及现有的HAR(Hadoop Archive)方案进行对比,评估改进方案在元数据管理、I/O性能等方面的提升情况。 2. **可扩展性分析**:测试不同规模的数据集下系统的表现,尤其是当小文件数量...