`
Arath
  • 浏览: 46909 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
  • LucasLee: 路过。C语言用的很少,看了各位的讨论,长了点见识。感觉C语言的 ...
    双刃剑 - 宏
  • Arath: 模板个人认为是个非常不好的东西,性价比非常不好,只是让程序员多 ...
    双刃剑 - 宏
  • jack: 尝试过近似纯模板的代码,写的很爽,编译时等死...
    双刃剑 - 宏
  • Arath: 在编译器中宏和模板处理的位置不同,其实完全在于C++对于模板的 ...
    双刃剑 - 宏
  • whisper: 所以纯一些的说编译器并不知道宏的存在预处理器都把活干完了模板才 ...
    双刃剑 - 宏

有关file mapping的测试

阅读更多
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工程

    windows下的 FileMapping 共享内存用法 封装成类 编译通过 测试通过 附件是sln工程

    netcat-httpd:基于netcat的小型httpd服务器

    --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...

    免费的汽车仿真开发环境 TSMaster V2021.8.6.606

    [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集群的安全最佳实践评估,审计,强化和取证准备工具

    hadoop-sec-bench hadoop-sec-bench是针对Hadoop集群的安全性最佳实践评估,审计,... 数据管理身份和访问管理数据保护与隐私网络安全基础架构安全与完整性跑步运行: ./run.sh --file mapping.json --dry --reporter

    cas 配置client 1.0 &2.0 及proxy DEMO 说明

    <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=...

    Android资源混淆工具AndResGuard.zip

     keypass_value storealias_value -mapping mapping_file_path若想指定7zip或zipalign的路径(若已设置环境变量,这两项不需要单独设置):java -jar andresguard.jar input.apk  -7zip /shwenzhang/tool/7za...

    BURNINTEST--硬件检测工具

    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 ...

    FCK在线编辑器源码及部署项目引用示例

    其中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-...

    Tomcat6.x+IIS6+jk2最新整合

    file="d:/Tomcat 6.0/logs/jk2.log" # 文件大小 size=1048576 # 如果tomcat,iis在一台服务器中时,不需要修改配置 # 默认端口8009 [channel.socket:localhost:8009] port=8009 host=localhost # define the worker ...

    Tomcat6.x+IIS6+jk2 整合

    file="C:\\\\Program Files\\\\Apache Software Foundation\\\\Tomcat 6.0\\\\conf\\\\logs\\\\jk2.log" # 文件大小 size=1048576 # 如果tomcat,iis在一台服务器中时,不需要修改配置 # 默认端口8009 [channel....

    play框架手册

    staticFile: mapping - 19 - URL 编码 - 19 - 反转路由:用于生成某些URL - 19 - 设置内容风格(CSS) - 20 - HTTP 内容协商 negotiation - 21 - 从http headers开始设置内容类型 - 21 - 定制格式 - 22 - 03.控制器 - ...

    play framework 框架手册 word 版

    staticFile: mapping - 19 - URL 编码 - 19 - 反转路由:用于生成某些URL - 19 - 设置内容风格(CSS) - 20 - HTTP 内容协商 negotiation - 21 - 从http headers开始设置内容类型 - 21 - 定制格式 - 22 - 03.控制器 - ...

    spring3.2+strut2+hibernate4

    spring3.2+strut2+hibernate4 注解方式。 spring.xml ... <description>Spring公共配置文件 ...-- class="org.springframework.orm.hibernate3.... <include file="/resource/struts-user.xml"></include>

    cms后台管理

    <welcome-file>index.shtml</welcome-file> <welcome-file>index.jhtml</welcome-file> </welcome-file-list> 通过以上标签找到应该加载哪一个页面 <servlet> <servlet-name>JeeCmsFront</servlet-name> ...

    基于MyEclipse搭建maven+springmvc整合图文教程(含源码0

    File->New->Project 选择Maven Project 选择项目路径 Use default Workspace location默认工作空间 选择项目类型 在Artifact Id中选择maven-archetype-webapp 输入Group ID和 Artifact ID,以及Package Group ID...

    VereORM至简持久层微架构

    2.打开 Eclipse 新建一个 test 项目 Eclipse -> File -> New -> Dynamic Web Project 3.将解压后 VereORM 和 VereORM/lib 目录下面的 jar 包拷贝到 test/WebContent/WEB-INF/lib 里面 下载数据库驱动包 ...

    springmybatis

    1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> 这个别名...

    精通Windows.API-函数、接口、编程实例.pdf

    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 分页与分段内存管理...

    Hbase中文文档

    目录 序 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

    精通WindowsAPI 函数 接口 编程实例

    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 分页与分段内存...

Global site tag (gtag.js) - Google Analytics