打印

[原创]xmlHTTP返回值重编码的优化(1/5更新)

置顶的帖子里有一个VBscript的代码用来将xmlHTTP返回值重编码,不过效率极其低下.....俺费了好大的力气,终于做了一个速度勉强让人满意的代码。不过水平所限还是不得不用了vbscript的chr函数用来将acsii转成unicode,不知道哪位大哥能想想办法?
ps:算法优化真是个费脑筋的活

-×-×-×-×-×-×-×-×-华丽的更新分割线-×-×-×-×-×-×-×-×-

2006/1/5更新
俺每句话都下了断点测试运行时间,终于把运行时间缩短了大约10倍,现在应该是一种可以实用的算法了

我一开始用正则替换,每个字替换一遍,结果发现87020字节居然要40秒左右
现在这个代码在我电脑上只需要大约3秒,哈哈哈哈,感觉真爽

注意:对于只需要解码一次的情形本算法不是最优,但是对于需要多次解码的时候应该是最好的算法了

 提示:您可以先修改部分代码再运行
本帖最近评分记录

[原创]xmlHTTP返回值重编码的优化

用innerText从responseBody中得到的值和用MidB得到的稍有不同(具体差异尚有待进一步分析;)),但在页面的编码未明的情况下这种差异有时甚至是致命的,页面越大出错得机会越大,以至于有的根本无法返回结果。不信大家可以自己试试,以下是调用蓝色理想的首页的情况。
机器或者网速慢的朋友请慎重,最好不要运行

 提示:您可以先修改部分代码再运行
需修改成如下方可正常返回。

 提示:您可以先修改部分代码再运行
由于页面较大,请耐心等待!;)
已有较大改进,请往下面找找看
最新版本的编码效率比原先的提高了近50倍
天下之大,无棋不有

[原创]xmlHTTP返回值重编码的优化


谢谢谢谢,非常感谢指正!bjhaoyun是好人啊。

[原创]xmlHTTP返回值重编码的优化

收藏了
http://www.qlili.com 个人站帮点啊

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!

[原创]xmlHTTP返回值重编码的优化

---------------------------
Microsoft Internet Explorer
---------------------------
下载用时5638ms

解码用时28441ms

显示用时80ms
---------------------------
确定   
---------------------------
因为我觉得我的手高,所以说我回答菜鸟问题的时候总是感觉自己象一个救世主——很帅!
啊~我真的觉得我好喜欢我自己啊!*^_^* 啊~亲一个!啵***啵***啵***~!

TOP

[原创]xmlHTTP返回值重编码的优化

hutia在上个帖子中说
引用:

谢谢谢谢,非常感谢指正!bjhaoyun是好人啊。
互相学习
天下之大,无棋不有

TOP

代码更新,顶一下给大家评评,哈哈,不过好像在线运行的效率不如我本地的高啊.....奇怪,不知道为什么

TOP

我运行一下也感觉好慢的!
www.chinadaily.com.cn
大隐隐于朝,中隐隐于市,小隐隐于野!

TOP

我运行了bjhaoyun的第一个,结果死机,强关了所有IE,再爬回来发贴

TOP

我在我们单位的电脑上(2.4G 256M)运行结果如下:
解析经典首页83420字节
bjhaoyun:8422ms

俺最新的:859ms

^_^

TOP

共计下载83455字节下载用时1843ms
解码用时938ms
再次解码用时1031ms
再次再次解码用时1031ms
显示用时16ms
我是菜鸟,什么都不懂的!

TOP

,well done,hutia!刚才为了方便比较时间,我修改了下显示方式,hutia更新后的结果的确是快了很多,hutia得大概在1500~2500ms,我的大概在18000~40000ms,开始没看到是5位数哈,原因嘛,用相对静态表(当然实际也是先生成的)代替了动态表。
再根据while比for快,j=xx.xx后调用j比xx.xx快以及现成的比临时write快在hutia的基础上再次做了下改进,大家可以试试看,现在机器慢的也可以试试了,不过网速慢+机器慢的还是请慎重,我的机器上结果只花了几百毫秒哈比以前又缩短了约一半的时间。

 提示:您可以先修改部分代码再运行
顺便问下,为什么最后一个字符">"丢掉了
天下之大,无棋不有

TOP

哈哈,在hutia更新的基础上又提高了5~8倍哈,现在的解码耗时297ms,hutia更新版大概在1500~2500ms,我上次改进版本的大概在800~1000ms,看谁还能比偶更快哈!

 提示:您可以先修改部分代码再运行
改进原则:减少循环次数。
其实需要替换的只有那些中文字符,因此循环的次数至少应该减少到和中文字符数量相等。经过几小时的奋斗,终于实现了哈。

问题:最后一个">"有时候会丢掉
本帖最近评分记录
天下之大,无棋不有

TOP

哦,bjhaoyun好棒!俺喜欢这种大家互相学习进步的氛围。确实是很棒的算法!!有这个算法Ajax实现起来就更轻松了哈哈哈哈。

TOP

我在使用lz的代码转换时
发现解析这个地址的rss的时候依然是乱码啊,能帮小弟解决一下这个问题吗?
地址是
http://blog.5d.cn/service/rss10.asp?uid=9187

TOP

不错,学习一下
The world always makes the way for the dreamer~!
dangel's blog

TOP

共计86697字节
下载耗时:1438
解码耗时:219

P4 2.0/ 512M
win2003/IE
FF1.0.6   挂掉了!一直“加载中”。状态栏显示“完成”! 源代码:中文是乱码!东西都还在!
-----------
刷新页面结果。“涓嬭浇涓�...”
乱码!中文全部乱码!
态度决定一切 电影下载

TOP

bjhaoyun在上个帖子中说
引用:
问题:最后一个">"有时候会丢掉
关于这个问题我作了一下测试发现,如果获取到的responseBody是以>字符给尾的话,就会把>丢掉。我想了个办法,在reCode(b)函数
var t=rsB(b);
时加给多个回车字符。改成
var t=rsB(b)+rsB('\n');
这样就不会丢失掉最后的>了
懒也是一种艺术
手机号码归属地查询

TOP

随便说一句,这组函数只适用于GB2312,对于UTF-8之类的编码无效的
懒也是一种艺术
手机号码归属地查询

TOP

在楼上几位算法的基础上又改进了一下,使用了js正则的语言特性避免了数据的分组和合并,效率又有20%的提高,速度是原先的60倍。

由于跨域问题,将url改为了bbs的首页。

 提示:您可以先修改部分代码再运行
[ 本帖最后由 zsy3721 于 2006-10-24 09:37 编辑 ]
人是会变的

TOP

引用:
原帖由 WebCoder 于 2006-2-26 14:23 发表
随便说一句,这组函数只适用于GB2312,对于UTF-8之类的编码无效的
那能给一个对,UTF-8之类的编码有交的 函数吗??

一直都想要一个,急!!

TOP

引用:
原帖由 faeng220 于 2006-10-25 09:05 发表


那能给一个对,UTF-8之类的编码有交的 函数吗??

一直都想要一个,急!!
从测试上讲 zsy3721 的速度上非常快,但以上好像都不能解UTF-8的编码,不知那位能提供一下


按理说,xmlHTTP作为AJAX的基础,FireFox应该支持xmlHTTP才对 ,但好像都没有返回结果………^_^不甚了解,别见效

[ 本帖最后由 ewen0930 于 2006-11-19 09:57 编辑 ]
lifv.cn

TOP

现在是不是不行了啊,还是服务器关了啊,我运行了一下,页面提示出错了,没反应,我的机器是,C(D)2.6  512M的.
学习无止境,愿与经典论坛共同辉煌!----john

TOP

重在学习。。。。AJAX这个好像只能在WEB平台。。单html不能运行的吧。。

TOP

为啥提示没有权限尼?
我命由我不由天~
80社区

TOP

re #18: escape在编码奇长度字节流时会导致最后一个字节丢失,用chrb(0)修正比较厚道

re #20: eval是胖子,把转换工作交给vbs,效率会再提升50%以上

 提示:您可以先修改部分代码再运行
re #22: utf-8直接用xmlhttp.responseText

re #25: 我这里也一样,可能因为IE7。把测试页的url改成"/"即可

[ 本帖最后由 mozart0 于 2006-11-22 22:56 编辑 ]
居处恭 执事敬 与人忠

TOP

??????????????????????????有点读不懂
www.9ihaody.cn

TOP