找回密码
 点一下
查看: 566|回复: 2

关于触发以及数据编辑:效果的效率疑问

[复制链接]
发表于 2013-12-1 19:39:05 | 显示全部楼层 |阅读模式



设个例子:

一个效果需要应用,这时候使用验证器判断,从而减少误用效果

比如一个大范围的持续行为应用


这时候判断是否拥有行为,如果有则不做多余动作,否则继续应用行为


在触发中也有这种结构的的动作


那么,判断条件所消耗的资源,与做动作所消耗的资源


那个更大?


在不包括动作创建模型消耗内存的情况下


是多判断减少无用动作好,还是少写判断更佳?
www


对编程了解不深,小白求指教》。。
发表于 2013-12-5 13:58:33 | 显示全部楼层
本帖最后由 ff1407 于 2013-12-5 14:11 编辑

我是学编程的,我说一下我对添加条件判断和节约时间资源消耗的理解,希望能帮上点。

先说点概念。添加条件判断来节约消耗其实是一种平衡。我们通过让电脑运行额外的判断逻辑(消耗额外资源),从而获得一定机会去少运行某段我们认为更消耗时间资源的逻辑。如果成功,那么耗时减少,失败就是耗时反增。

说点基础吧。对电脑来说,无论是判定还是做动作,都是运算。这只是量多和量少的差别。在判断和动作简单都很简单的时候,对于一次的直线执行来说,都可以认为电脑是瞬间完成,完全不消耗时间。“直线执行”的意思是一次性连判断和动作都一起运行一次。

需要计算时间资源消耗的时候有两种
1. 一次动作消耗大量时间的时候,那么每次判断都有可能带来大量节约。
2. 有一定运算量的动作被大量重复执行的时候,每次判断都有可能节约少量时间,而大量重复导致节约被积累成可观的玩家感受得到的节约。

总的来说,要考虑时间消耗的话,要看下面几点:
重复的总次数:重复次数少的话,条件只能带来有限的过滤次数
动作消耗的时间资源长短: 只有在动作消耗大于条件判断的消耗时,判断条件才有可能带来节约(注意,只是有可能)
动作实际运行的次数(通过判断条件的次数): 如果1000次运行中条件只能过滤掉其中10次,那么设条件本身基本可以认为不能带来节约,还带来额外990次判定运算


举个例子吧,下面是一段简单的运行逻辑

重复n从1加到10,并每次执行以下动作
    判断
       如果 n>5 则
         进行动作: 玩家资源 = n

判断条件: n>1 其实就大概触发一次CPU计算,你可以认为就是CPU中的元件跳动了一下的时间
动作:玩家资源 = n 是一次赋值,就是把数值从一个地方复制到游戏内存的一个位置,其实也大概相当于一次CPU计算。

在这个例子里,条件判断和动作消耗的资源基本一样,所以判定本身的节约效果很弱。而且10次重复计算,即使全部执行也基本可以忽略,总消耗太少,是否加判定过滤其实关系不大。

如果我们的重复次数n是加到1亿,那么我们就需要考虑是否可以通过条件来减少动作的执行。这个例子里条件是 n>5,判定本身只能成功过滤5次,判定本身作用不大。

如果条件换成n是偶数的话,那么将过滤掉一半。但这例子里由于条件的消耗和动作的消耗基本持平,于是不加判断是一次运算,加了后是先进行一次运算再在某些条件下额外加多一次运算。反而消耗更多了。

如果动作是一连串的逻辑的话,判定条件的消耗将大大小于动作,节约效果就会非常好。

点评

涨知识了! 多谢了大哥~~~~ 你真是腻害~~ 你真是好人啊1~~~  详情 回复 发表于 2013-12-5 15:05
回复

使用道具 举报

 楼主| 发表于 2013-12-5 15:05:30 | 显示全部楼层
ff1407 发表于 2013-12-5 13:58
我是学编程的,我说一下我对添加条件判断和节约时间资源消耗的理解,希望能帮上点。

先说点概念。添加条 ...

涨知识了!

多谢了大哥~~~~

你真是腻害~~

你真是好人啊1~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 11:58 , Processed in 0.064658 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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