为什么用File*数组来回切换并移动读取性能差?

topgun 2008-03-28 12:59:57
我有一个FILE*的指针数组,文件是一直保持打开读状态,程序来换切换并偏移指针到不同位置读取定长,在一台UNIX机上运行效率可以,在另外一台机器上性能差呢?
...全文
68 6 打赏 收藏 举报
写回复
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下有点怪,有时候其它地方的越界会导致程序不按理出牌。
  • 打赏
  • 举报
回复
机器的问题吧
topgun 2008-03-28
  • 打赏
  • 举报
回复
FILE* pFileTmp = m_FilesArry[iFileSeq];
fseek(pFileTmp, ulOffset , SEEK_SET);
//fread(&_Info,sizeof(_Info),1,pFileTmp) ; 我把这行注释掉非常快,所以说就是这儿的问题。

困了很多天,不太理解。
wsk528 2008-03-28
  • 打赏
  • 举报
回复
理论上应该是没有问题的吧,或许跟系统的环境或者硬件有关系。
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-28 12:59
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下