游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: lanlan

为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等待

[复制链接]

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-6-25 01:41:00 | 显示全部楼层

Re:为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等

LZ的标题太吓人了……是不是这样卖身又不用钱又不用身体啊?只要YY就行?
一般来说一条指令访问到memory的话,CPU就要几十个时钟周期,访问硬盘速度就更慢。。。LZ自己说的“之后打开fopen ”就不到1MS,原因之一是在cache里面已经存在了,二是GettickCount的精度,GetTickCount的精度是多少LZ没查过吧,16MS,低于这个数就像你卖身时年龄低于某个数似的,没人敢要敢用啊。。。):

2

主题

182

帖子

182

积分

注册会员

Rank: 2

积分
182
发表于 2006-6-25 06:13:00 | 显示全部楼层

Re:为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等

楼猪是个男人,或者就是很丑的女人,鉴定完毕!

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-28 20:13:00 | 显示全部楼层

Re:为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等

好啦。好啦。我换个函数测试还是这样!
就再C盘下面。我已经把C盘打开。然后用命令行调用的程序。(如果直接拖图标时间是0)。命令行下面是40ms。各位还游什么看法?

#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment (lib,"Winmm.lib")
void
main (int arc,char* argv[])
{
        if(arc != 2) return;
  DWORD start, finish, duration, i;

  FILE *f=0;
timeBeginPeriod (1);
start = timeGetTime ();
f=fopen(argv[1],"rb");
finish = timeGetTime ();
duration = finish - start;
if(f) printf("toookkkk %u\n",duration);
timeEndPeriod (1);


        getchar();
}

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-28 20:50:00 | 显示全部楼层

Re:为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等

来个更精确的!
结果应该是:如果你把那个目录打开了。PathFileExists返回就是0。如果从没碰过。就要40多
#include <stdio.h>
#include <windows.h>

#include "Shlwapi.h"

#pragma comment (lib,"Winmm.lib")
#pragma comment (lib,"shlwapi.lib")
void
main (int arc,char* argv[])
{
        if(arc != 2) return;
LARGE_INTEGER start, end, duration,d2, i;
bool f;FILE *fl;
QueryPerformanceCounter(&start);
f=PathFileExists(argv[1]);
QueryPerformanceCounter(&end);
fl=fopen(argv[1],"rb");
QueryPerformanceCounter(&d2);
duration.QuadPart  = end.QuadPart-start.QuadPart ;
QueryPerformanceFrequency(&i);
if(f)
{
        double t= (double)duration.QuadPart /(double)i.QuadPart *1000.0;
        printf("time %f\n",t);
        t= (double)(d2.QuadPart-end.QuadPart)/(double)i.QuadPart*1000.0;
        printf("ot %f\n",t);
       
}


        getchar();
}

21

主题

230

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
 楼主| 发表于 2006-6-29 09:49:00 | 显示全部楼层

Re:为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等

我明白了光磁盘寻道就要10ms.
那么游戏里面打包应该能够提高不少的速度。
小文件不能太多了。
假设游戏是10fps,那么100ms每个循环。如果中间搞一个磁盘操作fopen什么的,就要去掉1/10的时间。

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2006-7-8 06:40:00 | 显示全部楼层

Re:为什么光一个fopen要耗16,or 40ms的时间,小妹裸体床上等

一般读取文件的操作都在初始化的时候做,把文件内容加载在内存中,这样才能提高渲染速度,而不是每次渲染都打开/关闭文件。使用内存比使用硬盘效率高很多,你应该考虑初始化操作时加载什么文件,以及读取文件的时机(比如切换画面的时候)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表