首页
社区
课程
招聘
C++中的大型类的速度问题
发表于: 2004-8-4 23:17 6642

C++中的大型类的速度问题

RoBa 活跃值
16
2004-8-4 23:17
6642
我在写黑白棋程序时,虽然用VC写的但偶对C++的特性实在用不好,所以原先的做法是简单地把所有的估值、搜索等等都写成窗口类的成员函数,速度大约为每秒判断900个节点(太慢了)
后来我程序越写越乱了,就按一本资料上的范例那样构造了几个类,一个负责走棋,一个负责搜索,一个负责估值等等。本来只是为了清楚一些,没想到测试时速度吓了我一跳,每秒能判断5000节点以上!
为什么同样的功能,一个非常大的类会比几个小类所用时间大得多呢?请精通C++的高人解答一下。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (15)
雪    币: 279
活跃值: (375)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
小类可能来回压stack,花时间又浪费空间
2004-8-4 23:51
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上没看明白题目吧。
怎么看都没道理啊,就算有些差别,也不至于差5倍吧。
2004-8-5 08:12
0
雪    币: 279
活跃值: (375)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
又想了下,好像通过组织类并不能达到优化.
想了解的话,可以trace一下,两版本对比看看那里指令比较花时间
2004-8-5 09:35
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
5
现在基本构架还差一点尚未完成,先不考虑优化代码的问题了。
2004-8-5 11:10
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
6
按说也不应该呀,就算是编译器会优化,我测的还是DEBUG版呢,优化应该在RELEASE进行呀,搞不懂
有空追一下看看

试了下Release版,比Debug又提高了3倍
2004-8-5 11:19
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
请仔细的查看代码的修改。 和大小类是没有什么关系的。
2004-8-5 19:31
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
8
瞧瞧<Effective C++>,<More Effective C++>
会很有帮助的
2004-8-5 20:22
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
黑白棋里面就算估值部分最难了。我想了2个多星期了,也没有什么特别好的办法。
2004-8-6 09:09
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
10
偶现在正被一堆E文文献搞得头晕,估值函数目前顶级程序最常用的技术是把众多Features线性组合,但也有学者用神经网络,遗传算法等实现自动学习,够人琢磨的。
2004-8-6 10:24
0
雪    币: 279
活跃值: (375)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
11

别让那个小小的黑白棋折腾死人了 :D
2004-8-6 11:01
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
呵呵,也许发在这里不合适吧。应该到人工智能网上发。黑白棋这种看起来简单的东西,其实要做的强大是很难的。不像五子棋,无禁手时先手有必胜法。
2004-8-6 12:42
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
13
如果现在计算机性能再好一点的话就行了,6*6的黑白棋已经被人完全推导出来了,先手方最好结果是负4子。

反正闲着没事干,接着研究。:D
2004-8-6 17:28
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
6*6和8*8差别很远啊。步数差了接近1倍。
2004-8-6 22:02
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
你的黑白棋存在作弊现象!

看上面的图,白棋还有一步可走,但是你的程序却略过了。
2004-8-8 18:08
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
16
略过了是什么意思?我的程序说“计算机无子可下”吗

白棋输得好惨:)
2004-8-8 18:41
0
游客
登录 | 注册 方可回帖
返回