def test_map():
'''
#make hello file
dd if=/dev/zero of=hello.txt count=1024000
output:
524288000
0.557378053665 0
0.0396151542664 0
0.211034059525 0
0.979896068573 0
'''
import mmap
fp=open("hello.txt", "r+b")
map = mmap.mmap(fp.fileno(), 0)
print len(map)
m=len(map)
j=0
x=0
import time
import random
#随机访问
t1=time.time()
while 1:
j+=1
if j>100000:
break
x+=ord(map[random.randint(1,m)])
print time.time()-t1,x
map.close()
fp=open("hello.txt", "r+b")
map = mmap.mmap(fp.fileno(), 0)
#连续访问
t1=time.time()
j=0
while 1:
j+=1
if j>100000:
break
x+=ord(map[j+100000000])
print time.time()-t1,x
map.close()
t1=time.time()
j=0
#连续
fp=open("hello.txt", "r+b")
while 1:
j+=1
if j>100000:
break
fp.seek(j+100000000)
x+=ord(fp.read(1))
print time.time()-t1,x
fp.close()
t1=time.time()
j=0
#文件的随机读写
fp=open("hello.txt", "r+b")
while 1:
j+=1
if j>100000:
break
fp.seek(random.randint(1,m))
x+=ord(fp.read(1))
print time.time()-t1,x
fp.close()
分享到:
相关推荐
实际工作中遇到超大文件读写时很多系统需要等待较长时间,给用户体验不佳。本文结合源码讲解了超大文件的内存映射读写方式。内存映射方式极大的提高了读写效率,提升用户体验感。
qt 内存 映射 大文件读写
关于内存映射文件读写文件的方法,大家学习了解一下
通过使用“内存映射文件”,实现内存共享 代码包含如何定义共享的内存结构、如何创建共享内存映射文件、如何多程序调用共享内存映射文件、如何由非创建方程序来释放共享内存映射文件
本文介绍利用内存映射文件修改大文件:在大文件内存前加入一段数据,若要使用内存映射文件,必须执行下列操作步骤: 1.创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件; 2.创建一个文件...
利用内存映射文件技术实现进程间通信,自pudn程序员联合开发网下载
用内存映射文件实现的共享内存封装类。 实现了数据读写互斥。
易语言内存映射大文件源码,内存映射大文件,创建映射,打开文件_,取颗粒数,映射内存,读基址,释放内存,关闭文件_,写入字节集,移动读写位置_,读位置指针,删除字节集,十六到十,映射_创建,API_取文件长度,API_打开文件,API...
通过.net 4.0中的新类库使用内存映射文件
内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对...
使用内存映射的方式读写文件,提高文件读写速度
vc 内存映射文件.doc
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类...目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。
解释内存映射的基本概念,以及读写文件生成文件等细节注意事项,另外文章中还有内存映射大文件的细节办法。需要进行初学内存映射的人非常适合学习。
8.4.2 使用内存映射文件读BMP文件的例子
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类...目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。
我对内存映射文件的整理,摘自互联网呢,很有用的学习资料,你值得拥有
Visual C++ .NET环境下采用内存映射文件设计超大文件数据编辑器
采用内存映射文件的方法处理大文件,快速有效的文件处理方式。