游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2679|回复: 9

请教!变量访问速度问题!

[复制链接]

26

主题

39

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2008-4-22 22:34:00 | 显示全部楼层 |阅读模式
UCHAR   b=31,l;
DWORD time=GetTickCount()
for(int i=0;i<1440*1040;i++)
{
  l=b/31;
  l=b/31;
  l=b/31;
}
std::cout<<GetTickCount()-time;

//以上代码执行完以后  输出结果是 170    也就是说 用了170毫秒

DWORD  time=GetTickCount()
for (int i=0;i<1440*1040;i++)
{
  l=31/31;
  l=31/31;
  l=31/31;
}
std::cout<<GetTickCount()-time;

//以上代码执行完以后    输出结果是  0




我想知道这是怎么回事  我用的是VC6.0

这个问题怎么解决


86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2008-4-22 23:44:00 | 显示全部楼层

Re:请教!变量访问速度问题!

31/31的结果编译可以轻易知晓,像这样的代码会被编译期优化掉。
你输出汇编看一下就知道。

26

主题

39

帖子

78

积分

注册会员

Rank: 2

积分
78
 楼主| 发表于 2008-4-23 09:02:00 | 显示全部楼层

Re: 请教!变量访问速度问题!

谢谢你的回答    虽然我不太懂

但是我现在想知道怎么解决这个问题

使2种方法 速度接近

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2008-4-23 11:03:00 | 显示全部楼层

Re:请教!变量访问速度问题!

访问变量的速度就是比访问常量慢
要想速度接近只有把变量定义为常量了
const int b = 31;

15

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2008-4-23 12:33:00 | 显示全部楼层

Re:请教!变量访问速度问题!

常量不占储存空间,不需要访问数据段内存,当然要比变量快了。
用#define 更好。

26

主题

39

帖子

78

积分

注册会员

Rank: 2

积分
78
 楼主| 发表于 2008-4-23 13:39:00 | 显示全部楼层

Re:请教!变量访问速度问题!

网上有人说过可以创建内存空间,然后把变量放进内存空间,就可以快速的访问变量,具体是什么步骤我忘了

这种方法有没有人会?

26

主题

39

帖子

78

积分

注册会员

Rank: 2

积分
78
 楼主| 发表于 2008-4-24 10:21:00 | 显示全部楼层

Re:请教!变量访问速度问题!

补充!

问题在于  除法   b/31   
这里浪费的时间很多  有没有比较快速的方法来代替b/31

1

主题

57

帖子

59

积分

注册会员

Rank: 2

积分
59
QQ
发表于 2008-4-24 10:35:00 | 显示全部楼层

Re:请教!变量访问速度问题!

32的话可以右移5位,31的话我就没有优化的办法了,帮你up

21

主题

136

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2008-4-24 12:44:00 | 显示全部楼层

Re:请教!变量访问速度问题!

2楼说得很清楚了.
31/31是定值.优化过了就是1.
L=1是循环不变式.优化过后就提到循环外面来了!
所以是个空循环...

0

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2008-4-24 15:53:00 | 显示全部楼层

Re:请教!变量访问速度问题!

。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 17:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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