社区
C++ 语言
帖子详情
为什么用File*数组来回切换并移动读取性能差?
topgun
2008-03-28 12:59:57
我有一个FILE*的指针数组,文件是一直保持打开读状态,程序来换切换并偏移指针到不同位置读取定长,在一台UNIX机上运行效率可以,在另外一台机器上性能差呢?
...全文
80
6
打赏
收藏
为什么用File*数组来回切换并移动读取性能差?
我有一个FILE*的指针数组,文件是一直保持打开读状态,程序来换切换并偏移指针到不同位置读取定长,在一台UNIX机上运行效率可以,在另外一台机器上性能差呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
topgun
2008-03-28
打赏
举报
回复
说的也不对,我是在class外面定义了一个全局的File* g_FileTmp,
然后g_FileTmp=m_FilesArry[0];
之后在读取的时候用这个全局变量就快,难道要将m_FilesArry[]定义成全局的?之前我是在class类里头定义的,这似乎没有什么影响吧。
topgun
2008-03-28
打赏
举报
回复
而且,
我试过这样的代码:
fseek(m_FilesArry[0], ulOffset , SEEK_SET);
fread(&_Info,sizeof(_Info),1,m_FilesArry[0]) ; 我把这儿的读取写死成一直读第一个文件指针执行要快很多。
topgun
2008-03-28
打赏
举报
回复
难道是程序其它地方干扰到了?Unix c/c++程序跟windows下有点怪,有时候其它地方的越界会导致程序不按理出牌。
珍惜生命远离CPP
2008-03-28
打赏
举报
回复
机器的问题吧
topgun
2008-03-28
打赏
举报
回复
FILE* pFileTmp = m_FilesArry[iFileSeq];
fseek(pFileTmp, ulOffset , SEEK_SET);
//fread(&_Info,sizeof(_Info),1,pFileTmp) ; 我把这行注释掉非常快,所以说就是这儿的问题。
困了很多天,不太理解。
wsk528
2008-03-28
打赏
举报
回复
理论上应该是没有问题的吧,或许跟系统的环境或者硬件有关系。
来聊聊Netty的ByteBuf
它的功能可以被用户自定义的缓冲区类型扩展。通过内置的复合缓冲区类型实现了透明的零拷贝。容量可以按需增长(类似于 JDK 的 StringBuilder)。在读和写这两种模式之间
切换
不需要像JDK的ByteBuffer通过flip()方法进行
切换
。读和写使用了不同的索引,用户无需过度关注读写索引位置。支持方法的链式调用。支持引用计数,便于管理字节缓冲区的内存。支持池化,通过复用提升操作效率。
顺序、随机IO和Java多种读写文件
性能
对比
对于磁盘的读写分为两种模式,顺序IO和随机IO。 随机IO存在一个寻址的过程,所以效率比较低。而顺序IO,相当于有一个物理索引,在
读取
的时候不需要寻找地址,效率很高。我们编写的用户程序读写文件时必须经过的OS和硬件交互的内存模型用户程序通过编程语言提供的
读取
文件api发起对某个文件
读取
。此时程序
切换
到内核态,用户程序处于阻塞状态。由于
读取
的内容还不在内核缓冲区中,导致触发OS缺页中断异常。然后由OS负责发起对磁盘文件的数据
读取
。
读取
到数据后,先存放在OS内核的主存空间,叫PageCache。然后OS再将数据
java多线程 文件夹_java多线程读同一个文件
java多线程同时
读取
一个文件,这个方法可行吗?不可行。 多线程能够提高效率是因为现在的cpu普遍是多核cpu, 多条线程可以在多个内核中同时执行来提高计算效率。但是计算机磁盘的磁头只有一个,即使多条线程去读也并不能提高
读取
效率,反而因为多线程的上下文
切换
问题会耗时更久。“java”中多线程按行
读取
txt且每个线程读的内容不能你把原来程序中直接读的地方,改成调用上面的函数,由该函数统一读行。这样,...
imx6ull/linux应用编程学习(2)GPIO编程(下)
当 poll()函数返回时, revents 变量由 poll()函数内部进行设置,用于说明文件描述符 fd 发生了哪些事件(注意, poll()没有更改 events 变量) ,我们可以对 revents 进行检查,判断文件描述符 fd 发生了什么事件。当执行命令之后,我们可以使用杜邦线将 GPIO1_IO01 引脚连接到 GND 或 3.3V 电源引脚上,
来回
切换
,使得 GPIO1_IO01 引脚的电平状态发生由高到低或由低到高的状态变化。的目的是将文件指针
移动
到文件的开头,以便重新
读取
文件内容。
用fgets()替换fscanf()解决文件
读取
在小熊猫C++失败问题
fscanf()遇到空格就结束
读取
,导致文件
读取
数据没完就退出
读取
以至于不能导入游戏地图工程。看看到右侧小方块轨迹知晓采样区
移动
情况。也已经实现摄像机追随玩家效果。
C++ 语言
65,190
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章