http://www.iteye.com/topic/46777
这个帖子中说到了file mapping用于大文件读写,因为速度快.
按照我以往个人的认识是: file mapping能够提高大文件读写速度,但是并不是一定要用file mapping来实现.
file mapping的工作原理并不复杂,应该算是一种大的文件数据cache, 大的cache可以使在一定范围内的寻址速度加快,因为数据不需要通过较慢的File IO去操作,而直接使内存读写. 正是这个主要的特性将大大提高随机的读取操作,例如数据库文件的操作就是.
依照这个思想,如果不用file mapping也应该可以实现这种功能.
为了验证自己的观点,我写了一个测试程序,如附件.
总共三个测试方法,分别为:
FileOperation1 - 使用file mapping
FileOperation2 - 常用的文件读写
FileOperation3 - 自定义cache读写
测试的时候产生一个按照扇区总数(BLOCKSIZE/SECSIZE大)的乱序访问顺序,用来模拟实际的随机读取,每个测试程序都根据这个顺序一个扇区一个扇区(这里简单的用SECSIZE设定扇区大小,完善的话就去抓取系统物理扇区的大小)的访问,每个扇区内的数据都逐一读写.
在设定BLOCKSIZE为1MB的时候,得到的测试数据如下
Test1:
Access: 0
Write: 20
Test2:
Access: 3996
Test3:
Access: 0
Write: 20
在设定BLOCKSIZE为10MB的时候,得到的测试数据如下,这时候Test2的速度已经让人难以忍受了
Test1:
Access: 60
Write: 421
Test2:
Access: 39827
Test3:
Access: 90
Write: 311
在设定BLOCKSIZE为100MB的时候,我已经无法忍受Test2了,只对比Test1和Test3
Test1:
Access: 701
Write: 4166
Test3:
Access: 922
Write: 4887
简单三次测试虽然模拟的方式会比file mapping慢一点,但是基本还是在一个档次上的,所以应该可以证实我的判定,剩余速度的差异应该是出在操作系统对file mapping的优化了.
当然我这个测试只是验证了作为cache对速度提升上面,实际操作中file mapping在数据commit上作的优化较多,所以还是推荐使用file mapping访问大文件,但是同样要说file mapping不是处理大文件的唯一途径.
最后提醒...测试的目标文件会被修改,使用产生任何意外与本人无关
分享到:
相关推荐
`TESTFileMapping.sln`是一个Visual Studio解决方案文件,而`TESTFileMapping`可能是源代码项目,其中包含了实现`FileMapping`功能的类和测试用例。 在实际应用中,`FileMapping`共享内存需要注意线程安全问题,...
映射文件(Mapping File)在Java开发中通常用于记录编译后的源代码到字节码之间的关系,这种关系包括类名、方法名、字段名等的改变。在使用混淆工具(如ProGuard或R8)进行代码混淆时,映射文件会记录原始名称和混淆...
至于`upload`这个压缩包子文件,可能包含了一个示例的文件上传项目,可能包括了JSP页面、ActionForm类、Action类、Struts配置文件以及可能的测试文件。通过查看这些文件,你可以更深入地了解Struts 1中文件上传的...
在开始测试前,需要获取开发人员提供的WebService实现和相关的接口信息。测试时,使用各种参数组合,确保在不同条件下,服务都能返回正确的结果。 **2.2 性能测试** 性能测试关注的是接口在高并发、长时间运行和...
10. **测试与文档**:完善的测试用例和清晰的文档是开源项目质量的保障,cznic-file可能包括单元测试、集成测试以及详细的使用指南和API文档。 通过cznic-file项目,开发者不仅可以学习到文件系统的高级操作,还...
在本文中,我们将深入探讨如何实现一个简单的XI(SAP Exchange Infrastructure)PI(Process Integration)文件到文件(File to File)场景。这个场景是许多集成解决方案的基础,因为它涵盖了创建任何其他类型场景所...
28. Library Mapping File (.lmf):库映射文件,用于描述数字电路的库映射关系。 29. License File (license.dat):许可文件,用于存储和管理数字电路的许可信息。 30. Logic Analyzer Interface File (.lai):...
--mapping path_to_mapping_file 默认的 mapping_file 是./route_map一个典型的 mapping_file 如下所示 /get ./api/get /post ./api/post /static_file -s ./static/static_file 或者,您可以使用--mapping dynamic...
Pin Mapping Records是STDF中的一种特殊记录类型,用于描述测试针对的映射关系。Pin Mapping Records包括针对map记录、针对组记录和针对列表记录等。 Differences Between STDF V3 and V4 STDF V4是对STDF V3的...
标题 "pure_water_mapping" 暗示我们可能在讨论一个与数据处理或地图相关的项目,而标签 "Java" 显示这个项目是用 Java 编程语言实现的。在这个项目中,"pure_water_mapping" 可能是一个软件工具或库,用于处理与...
marshaller.setMapping(new File("path/to/mapping.xml")); File xmlFile = new File("path/to/xml/file.xml"); File xsdFile = new File("path/to/xsd/schema.xsd"); marshaller.setSchema(xsdFile.toURI()....
这个压缩包提供的是对Grails Data Store的测试支持,特别关注于GORM(Grails Object Relational Mapping)的单元测试。 GORM是Grails的核心部分,它提供了一个面向对象的接口来操作关系数据库,类似于Hibernate。...
"j2ee上传单个文件小测试"是一个学习和实践此功能的实例。在这个例子中,我们将探讨如何在J2EE环境中实现一个简单的文件上传功能。 首先,文件上传在J2EE中主要依赖于HTTP协议的多部分/形式数据编码(Multipart/...
- **新建文件**:选择**File → New**命令,出现新建文件对话框,从中选择**Verilog HDL File**项,单击**OK**按钮。 - **文件命名与保存**:通过**File → Save As**命令更改文件名称,例如命名为**exercise2**,并...
"测试工具包测试说明文档"可能包含有关如何使用这些工具进行接口测试和验证的指导。通常,这样的文档会详述如何创建和运行测试用例,确保生成的Java对象和映射文件正确无误地映射了原始XML数据。这有助于在实际应用...
<welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet-name>XFireServlet <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <servlet-...
TSK-MAP是TSK探针台在进行晶圆测试时生成的一种数据文件,它包含了晶圆上的各个测试点的位置信息和测试结果。这种文件通常是非图形化的,不利于直观地查看和分析。而将TSK-MAP转换为BMP图像,可以使这些数据以图形化...
#### Library Mapping File - .lmf - **描述**:定义了库之间的映射关系。 - **应用场景**:在设计中需要使用多个库时,通过.lmf文件指定库的映射。 #### License File - license.dat - **描述**:存储许可证信息...
PassMark BurnInTest V5.3 ...All Rights Reserved ... Overview ======== Passmark's BurnInTest is a software tool that ...- Corrections to the mapping of paths with ".\". Release 5.3 build 1011 rev 2 WIN32 ...
hadoop-sec-bench hadoop-sec-bench是针对Hadoop集群的安全性最佳实践评估,审计,... 数据管理身份和访问管理数据保护与隐私网络安全基础架构安全与完整性跑步运行: ./run.sh --file mapping.json --dry --reporter