找回密码
 点一下
查看: 1090|回复: 8

全局变量赋值速度问题

[复制链接]
发表于 2009-2-24 21:30:36 | 显示全部楼层 |阅读模式
set udg_x = unitooxx1
do sth
set udg_x = unitooxx2
do sth


中间最多有多少延迟?
发表于 2009-2-24 21:32:20 | 显示全部楼层
不知道..
回复

使用道具 举报

发表于 2009-2-24 21:43:05 | 显示全部楼层
...............要看你的 do something 了
回复

使用道具 举报

发表于 2009-2-26 16:07:46 | 显示全部楼层
应该不会超过1秒
如果中间没有等待的话
回复

使用道具 举报

发表于 2009-2-26 16:21:07 | 显示全部楼层
…………………………
中间有等待:
等待时间+something耗时
中间没等待:
min{ 魔兽触发器最大字节符执行耗时, something耗时 }

至于set udg_x = unitooxx1,耗时0.00N / 1000(估计)
回复

使用道具 举报

发表于 2009-2-26 16:42:27 | 显示全部楼层
赋值应该只是几个机器周期的时间把`````短到几乎可以忽略``

lx很强大.
不过jass是运行在虚拟机上的把..
那不是更复杂了点``
回复

使用道具 举报

发表于 2009-2-26 17:18:03 | 显示全部楼层
解释执行的语言和编译执行的语言不同,很简单的一个操作也比想象中复杂

就这句而言 set udg_x = unitooxx1(这是变量吧?) 会被拆成两句

1、读unitooxx1的值
2、写udg_x的值

而写udg_x的值会分成这样几步

1、查表获取变量名,也就是"udg_x"
2、在全局变量表查找udg_x的地址
3、如果2中没找到,在局部变量表查找udg_x的地址
4、在缓冲区中取出要写的值
5、写入
6、貌似最后还有一步不知道干什么的
回复

使用道具 举报

 楼主| 发表于 2009-2-27 09:51:17 | 显示全部楼层
这样,回答还是很不错的。
我问这个问题是因为我似乎在赋值时候发现了间隔。
回复

使用道具 举报

发表于 2009-2-27 10:00:53 | 显示全部楼层
运行语句肯定有间隔的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-21 16:23 , Processed in 0.145282 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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