设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1161|回复: 3
打印 上一主题 下一主题

[已经解决] alias会降低脚本效率么?

 关闭 [复制链接]

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
跳转到指定楼层
1
发表于 2009-10-18 18:29:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
相比在原有基础上直接修改。alias会降低脚本效率么?意思也就是问,如果给一段脚本反复alias,会不会增加游戏的内存消耗等。
我爱66RPG,但我讨厌66.

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

2
发表于 2009-10-18 18:36:24 | 只看该作者
应该会吧。以前我翻译影子脚本的时候,里面有段代码用alias结果出现了错误——所以我就改回了重写才恢复正常。
alias应该是重命名的意思吧……应该会占用一些内存消耗的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
3
 楼主| 发表于 2009-10-18 18:42:49 | 只看该作者
哦,谢谢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

4
发表于 2009-10-19 02:15:38 | 只看该作者
本帖最后由 link006007 于 2009-10-19 02:44 编辑

载入脚本和运行时都有性能损失
ruby对脚本的组织是以node来管理的,在ruby解释器读入脚本时,遇到alias,则会查找目标类的原函数,
然后判断alias有效性,无效则抛出异常(如没有原始方法,这回调用print_undef方法),如果有效,则跟新node连接信息,插入符号表,最后调用一次method_added或者singleton_method_added<--这两个是ruby脚本可调用的方法
在运行时.
单纯的C函数调用, 如果一次就可以完成而被迫分成n次,其他不算,至少多了函数的栈操作时间.(当然,对于ruby本身的速度,这个可以忽略不计)
在加上如果被alias旧名函数里有原本不需要的个别步骤,那么消耗性能是必然的了(这个消耗最大)
最后,从ruby脚本的执行来看
ruby解释器通过ruby_exec_internal调用eval_node来运行脚本(其实就是调用ruby的eval函数)
也就是,ruby脚本在执行时,是一个对上述node中保存信息的执行过程,alias增加了整体node(是树)的复杂度,多少也会损失性能吧

以上只是个人理解...欢迎拍砖 有兴趣可以看看eval.c,里面包含ruby的语法结构和大部分主要运行过程
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-30 04:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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