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不是处理大文件的唯一途径.
最后提醒...测试的目标文件会被修改,使用产生任何意外与本人无关
分享到:
相关推荐
windows下的 FileMapping 共享内存用法 封装成类 编译通过 测试通过 附件是sln工程
--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...
[1] New: Auto Mapping Code generation for TSMaster SDK [2] New: file and directory API added [3] New: UDP broadcast API added [4] New: Global rx filter added for all supported CAN interfaces [5] New: ...
hadoop-sec-bench hadoop-sec-bench是针对Hadoop集群的安全性最佳实践评估,审计,... 数据管理身份和访问管理数据保护与隐私网络安全基础架构安全与完整性跑步运行: ./run.sh --file mapping.json --dry --reporter
<welcome-file>index.jsp</welcome-file> </welcome-file-list> 4 cas client 2.0配置说明 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
keypass_value storealias_value -mapping mapping_file_path若想指定7zip或zipalign的路径(若已设置环境变量,这两项不需要单独设置):java -jar andresguard.jar input.apk -7zip /shwenzhang/tool/7za...
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 ...
其中test.jsp与test.html为测试FCK页面,部署到其它项目步骤如下: 1.将FCKedit-2.3.jar、commons-beanutils-1.7.0.jar、commons-fileupload-1.2.jar、commons-io-1.3.2.jar、commons-lang-2.0.jar、commons-...
file="d:/Tomcat 6.0/logs/jk2.log" # 文件大小 size=1048576 # 如果tomcat,iis在一台服务器中时,不需要修改配置 # 默认端口8009 [channel.socket:localhost:8009] port=8009 host=localhost # define the worker ...
file="C:\\\\Program Files\\\\Apache Software Foundation\\\\Tomcat 6.0\\\\conf\\\\logs\\\\jk2.log" # 文件大小 size=1048576 # 如果tomcat,iis在一台服务器中时,不需要修改配置 # 默认端口8009 [channel....
staticFile: mapping - 19 - URL 编码 - 19 - 反转路由:用于生成某些URL - 19 - 设置内容风格(CSS) - 20 - HTTP 内容协商 negotiation - 21 - 从http headers开始设置内容类型 - 21 - 定制格式 - 22 - 03.控制器 - ...
staticFile: mapping - 19 - URL 编码 - 19 - 反转路由:用于生成某些URL - 19 - 设置内容风格(CSS) - 20 - HTTP 内容协商 negotiation - 21 - 从http headers开始设置内容类型 - 21 - 定制格式 - 22 - 03.控制器 - ...
spring3.2+strut2+hibernate4 注解方式。 spring.xml ... <description>Spring公共配置文件 ...-- class="org.springframework.orm.hibernate3.... <include file="/resource/struts-user.xml"></include>
<welcome-file>index.shtml</welcome-file> <welcome-file>index.jhtml</welcome-file> </welcome-file-list> 通过以上标签找到应该加载哪一个页面 <servlet> <servlet-name>JeeCmsFront</servlet-name> ...
File->New->Project 选择Maven Project 选择项目路径 Use default Workspace location默认工作空间 选择项目类型 在Artifact Id中选择maven-archetype-webapp 输入Group ID和 Artifact ID,以及Package Group ID...
2.打开 Eclipse 新建一个 test 项目 Eclipse -> File -> New -> Dynamic Web Project 3.将解压后 VereORM 和 VereORM/lib 目录下面的 jar 包拷贝到 test/WebContent/WEB-INF/lib 里面 下载数据库驱动包 ...
1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> 这个别名...
4.4.2 通过Mapping File在进程间传递和共享数据 115 4.4.3 通过文件句柄获得文件路径 118 4.5 总结 121 第5章 内存管理 122 5.1 Windows内存管理原理 122 5.1.1 基本概念 122 5.1.2 分页与分段内存管理...
目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. 配置 2.1. Java 2.2. 操作系统 2.3. Hadoop 2.4. HBase运行模式:单机和分布式 2.5. ZooKeeper ...3.1. 从HBase 0.20.x or 0.89.x ...8.1. Operation To Permission Mapping
4.4.2 通过Mapping File在进程间传递和共享数据 115 4.4.3 通过文件句柄获得文件路径 118 4.5 总结 121 第5章 内存管理 122 5.1 Windows内存管理原理 122 5.1.1 基本概念 122 5.1.2 分页与分段内存...