社区
C++ 语言
帖子详情
为什么用File*数组来回切换并移动读取性能差?
topgun
2008-03-28 12:59:57
我有一个FILE*的指针数组,文件是一直保持打开读状态,程序来换切换并偏移指针到不同位置读取定长,在一台UNIX机上运行效率可以,在另外一台机器上性能差呢?
...全文
104
6
打赏
收藏
为什么用File*数组来回切换并移动读取性能差?
我有一个FILE*的指针数组,文件是一直保持打开读状态,程序来换切换并偏移指针到不同位置读取定长,在一台UNIX机上运行效率可以,在另外一台机器上性能差呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
理论上应该是没有问题的吧,或许跟系统的环境或者硬件有关系。
顺序、随机IO和Java多种读写文件
性能
对比
对于磁盘的读写分为两种模式,顺序IO和随机IO。 随机IO存在一个寻址的过程,所以效率比较低。而顺序IO,相当于有一个物理索引,在
读取
的时候不需要寻找地址,效率很高。我们编写的用户程序读写文件时必须经过的OS和硬件交互的内存模型用户程序通过编程语言提供的
读取
文件api发起对某个文件
读取
。此时程序
切换
到内核态,用户程序处于阻塞状态。由于
读取
的内容还不在内核缓冲区中,导致触发OS缺页中断异常。然后由OS负责发起对磁盘文件的数据
读取
。
读取
到数据后,先存放在OS内核的主存空间,叫PageCache。然后OS再将数据
C++ 零拷贝网络传输:利用 send
file
与 C++ 缓冲区管理减少内核态
切换
C++零拷贝网络传输,特别是利用send
file
系统调用,是构建高
性能
网络服务的关键技术之一。通过减少数据在用户态和内核态之间的拷贝次数,以及降低上下文
切换
频率,send
file
能够显著提升文件传输的吞吐量,降低CPU利用率。结合epoll等非阻塞I/O机制和精细的C++缓冲区管理,可以构建出既高效又健壮的现代网络服务器。虽然send
file
存在一定的适用性限制,但在其擅长的文件传输场景中,它无疑是提升
性能
的强大工具。随着io_uring等新技术的普及,未来的零拷贝I/O将更加强大和灵活。
java多线程 文件夹_java多线程读同一个文件
java多线程同时
读取
一个文件,这个方法可行吗?不可行。 多线程能够提高效率是因为现在的cpu普遍是多核cpu, 多条线程可以在多个内核中同时执行来提高计算效率。但是计算机磁盘的磁头只有一个,即使多条线程去读也并不能提高
读取
效率,反而因为多线程的上下文
切换
问题会耗时更久。“java”中多线程按行
读取
txt且每个线程读的内容不能你把原来程序中直接读的地方,改成调用上面的函数,由该函数统一读行。这样,...
[数据集][目标检测]智能手机屏幕缺陷检测实战:基于VOC+YOLO格式的油斑、划痕与亮点识别
本文详细介绍了基于VOC+YOLO格式的智能手机屏幕缺陷检测实战,涵盖油斑、划痕与亮点识别。通过YOLOv5模型训练和工业部署优化,显著提升检测效率与准确率,适用于手机制造流水线的自动化质检,减少人工成本与漏检率。
Win7系统优化终极批处理工具实战包
最后聊聊defrag命令。虽然现在SSD普及了,但在很多工业控制、老旧办公环境中,机械硬盘仍是主力。而机械硬盘最怕什么?碎片化。当一个大文件被分散存储在不同物理扇区时,磁头就要
来回
移动
读取
,造成严重
性能
损耗。微软测试表明,碎片率超过15%,
读取
速度可下降30%以上。defrag你看,我们用了不到200行批处理代码,就实现了:✅ 系统垃圾清理✅ 启动项智能管理✅ 注册表冗余项识别✅ 磁盘碎片自动整理。
C++ 语言
65,212
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章