wsc调用效率测试

背景:
        MS系统将一定格式的脚本打包,编译后以Com接口对外提供服务,简称wsc。wsc可以和Com一样的调用,而本身采用文本方式编写,所以使用维护起来很方便。但是这里有个问题,由于wsc是文本方式编写,因此每次调用是都必须重新编译一道,这是肯定造成速度过慢。以Ms的水准,肯定会在编译、调用间有个缓存,但这个缓存在多大范围内起作用?我在msdn里没有找到,所以自己测试了一下。


对象:
        测试对象:test.wsc,共320行,其中代码222行,调用方式getobject("script:c:/test.wsc")。
        参考对象:已注册的adodb.recordset,调用方式createobject("adodb.recordset")。

 

测试方法:
        循环若干次调用对象,然后将循环秒数/循环次数,得到每次调用所耗费秒数。
        测试分两种,A:调用前不清空上次对象,即内存中始终有一个实例;B:调用前清空上次对象(set obj=nothing)。

 

测试结果如下:
 [500次]
Normal---> a:0 b:0
getWsc---> a:0 b:.014
 [1000次]
Normal---> a:0 b:0
getWsc---> a:.001 b:.014
 [2000次]
Normal---> a:0 b:0
getWsc---> a:.0015 b:.015
 [4000次]
Normal---> a:0 b:0
getWsc---> a:.001 b:.0165
 [8000次]
Normal---> a:0 b:0
getWsc---> a:.00125 b:.0165
 [16000次]
Normal---> a:0 b:.0000625
getWsc---> a:.001 b:.016
 [32000次]
Normal---> a:.00003125 b:.00003125
getWsc---> a:.001125 b:.015375
 [64000次]
Normal---> a:.000046875 b:.000046875
getWsc---> a:.001015625 b:.014890625

   

数据比较:
    1、com在调用时,无论A、B方式,调用时间不变
    2、wsc在调用时,A方式比B方式至少快1个数量级,两种方式均趋向一个定值(是否和wsc编译规模有关?)
    3、A方式调用时,com比wsc快越2个数量级;B方式相差巨大,不予考虑

结论:
    在同一程序中,若多次调用同一wsc,应尽量在全部调用结束前不要setnothing释放对象


附:
    通过其他测试,发现不同的进程(线程未测试)中相同wsc存在和调用互相无影响,这似乎说明scrobj.dll的缓存只针对调用者。然而以线程方式运行的asp,不同页面间调用同一wsc效率是否会互相影响呢???尚未测试,相信这对于使用wsc的asp效率至关重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值