关于缓存内容读取

a24027 2017-07-27 02:44:55
解析文件,需要先读取文件,老板说频繁读取降低效率,所以先把文件内容读取到缓存区,然后从缓存里读取,但是缓存里怎么读呢

unsigned char* pBuf;
pBuf=(char*)malloc(1000);

指针为字符指针,然而实际的数据有整型,短整型和字符型,怎样通过字符指针直接读取4个字节连在一起的内容呢
...全文
254 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
东边一耳 2017-08-03
  • 打赏
  • 举报
回复
这种问题可以用共享内存,把文件直接映射到进程地址空间,效率不会比都read到缓冲区(内存)慢
赵4老师 2017-08-03
  • 打赏
  • 举报
回复
在文件大小相同的前提下: 读刚读过的文件比头次读没读过的文件快 读转速快的硬盘上的文件比读转速慢的硬盘上的文件快 读没有磁盘碎片的文件比读有磁盘碎片的文件快 读文件不处理比边读边处理快 单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上) 读固态硬盘上的文件比读普通硬盘上的文件快 您是否希望迅速对您频繁使用的文件进行碎片整理?使用 Contig 优化单个的文件,或者创建连续的新文件。http://technet.microsoft.com/zh-cn/sysinternals/bb897428
赵4老师 2017-08-03
  • 打赏
  • 举报
回复
引用 6 楼 chenzheng1030 的回复:
这种问题可以用共享内存,把文件直接映射到进程地址空间,效率不会比都read到缓冲区(内存)慢
有画蛇添足之嫌。
赵4老师 2017-07-28
  • 打赏
  • 举报
回复
不要低估操作系统读写文件时使用内存缓冲区策略所用的智商!
自信男孩 2017-07-27
  • 打赏
  • 举报
回复
引用 3 楼 a24027 的回复:
[quote=引用 1 楼 cfjtaishan 的回复:] [quote=引用 楼主 a24027 的回复:] 解析文件,需要先读取文件,老板说频繁读取降低效率,所以先把文件内容读取到缓存区,然后从缓存里读取,但是缓存里怎么读呢 unsigned char* pBuf; pBuf=(char*)malloc(1000); 指针为字符指针,然而实际的数据有整型,短整型和字符型,怎样通过字符指针直接读取4个字节连在一起的内容呢
可以考虑定义结构体,读取的内容放到pBuf缓存里(char类型)然后再强制类型转换。[/quote] 从文件读取,内容又不是单一格式,不能定义结构体[/quote] 看你文件的内容是不是有格式或者规律的,使用fscanf可以对有格式的内容读取。如果没有规律,考虑读到pBuf里,然后挨个解析了。
a24027 2017-07-27
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
[quote=引用 楼主 a24027 的回复:] 解析文件,需要先读取文件,老板说频繁读取降低效率,所以先把文件内容读取到缓存区,然后从缓存里读取,但是缓存里怎么读呢 unsigned char* pBuf; pBuf=(char*)malloc(1000); 指针为字符指针,然而实际的数据有整型,短整型和字符型,怎样通过字符指针直接读取4个字节连在一起的内容呢
可以考虑定义结构体,读取的内容放到pBuf缓存里(char类型)然后再强制类型转换。[/quote] 从文件读取,内容又不是单一格式,不能定义结构体
赵4老师 2017-07-27
  • 打赏
  • 举报
回复
老板胡诌了。 无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
自信男孩 2017-07-27
  • 打赏
  • 举报
回复
引用 楼主 a24027 的回复:
解析文件,需要先读取文件,老板说频繁读取降低效率,所以先把文件内容读取到缓存区,然后从缓存里读取,但是缓存里怎么读呢 unsigned char* pBuf; pBuf=(char*)malloc(1000); 指针为字符指针,然而实际的数据有整型,短整型和字符型,怎样通过字符指针直接读取4个字节连在一起的内容呢
可以考虑定义结构体,读取的内容放到pBuf缓存里(char类型)然后再强制类型转换。

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧