Monthly Archives: 二月 2009

Javascript拼接字符串效率测试

JavaScript开发中,经常需要组合字符串进行输出,比如接收服务端信息,然后格式化成html再显示到页面上。
一般用到两种方法来进行拼接,Array.join和+=串联字符串,为了得到最佳的效率,对这两种方法进行了测试;
Array.join测试代码:

var timer = new Date().getTime();
var arr = new Array();
for (var i = 0; i < 50000; i++){
    arr.push(‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa’);
}
arr.join(”);
document.write(new Date().getTime() – timer);

+=测试代码:

var timer = new Date().getTime();
var str = ”;
for (var i = 0; i < 50000; i++){
    str += ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa’;
}
document.write(new Date().getTime() – timer);

结果看下图(测试结果因电脑性能而异,数据只代表在我电脑上的结果):
50000次的拼接,每次拼接150个字符:

在这些比较标准的浏览器里,+=和Array.join的方法结果差不多,Opera在join后,效率降低很多。
然后对IE7进行了测试:
10000次拼接,每次拼接150个字符,不要弄5万10万的,别怪我没告诉你~

在IE7里就有相当明显的出入了,10000次拼接,差了2W多ms。
所以,拼接字符串,推荐使用join的方法,较优于+=的拼接方法,特别是在IE里,有相当大的改善。
最后嘀咕两句, IE这个**,实在不想说什么了,安全性,性能,功能,无一是处的浏览器,现在却占有着60%+的份额,我$#$&*@~~~~推荐FireFox,安全,标准的浏览器,下载地址请猛击这里

2009-2-22到2-26我在嘀咕的嘀嘀咕咕~

今天打算看点啥电影呢~ 2009年02月22日 11:41
每逢周末,总觉得是个学习的好时间,却是最懒散的时间…. 2009年02月22日 11:42
看Twitter的代码,有点复杂…主要是FireFox的界面,这一块没去了解过。 2009年02月22日 11:43
冰镇菠萝加糖,有点爽~ 2009年02月22日 13:18
Google Reader这段时间都不怎么经常看了,汗~~都不知道瞎忙些啥。 2009年02月22日 13:24
用了近五年的舒适鲨,近来貌似右击偶尔会有不灵敏的现象 2009年02月22日 18:55
喝完一杯咖啡,洗个澡,躺床上看书去。。。这真是一个坏习惯。 2009年02月22日 22:18
我想干什么来的…忘了,还是看书去吧~ 2009年02月22日 23:03
BS在嘀咕上RSS导入….重复信息啊,好乱 2009年02月23日 10:18
号外号外:FireFox下,背景固定且背景图较大时,会导致滚动延迟,随机器性能表现不同。此BUG目前好像没有较好的办法来解决~ 2009年02月23日 13:50
一组可爱的Twitter图标设计 太有趣,太有材了.. 2009年02月23日 14:50
菠萝菠萝菠萝菠萝,我喜欢…. 2009年02月23日 15:57
@圣兽麒麟 我最后看的他的《孔雀森林》,也不错的 2009年02月23日 16:55
天气热起来了,脸上冒汗了,公司开空调了没~~ 2009年02月23日 16:59
RT: @Fenng: 如果技术人员持续从事低效率的工作,极有可能渐减厌烦技术,疏远技术,乃至对技术绝望,而一个高效的技术人才能从技术中获得真正的快乐。 2009年02月23日 17:02
座位上很闷热,到外面平台抽了根烟,竟然有几只燕子掠过,难得~ 2009年02月23日 17:10
用了一下火兔,卡死了。。。完全不考虑我这种老爷机的感受啊。。还是用彩信好了~ 2009年02月23日 18:02
买了个8g的优盘,真便宜 2009年02月23日 18:44
上班等车,昨晚吃完饭很困,随便一躺,结果睡到了早上… 2009年02月24日 08:16
@huotu 老爷机几乎用不了,好卡啊,有没有办法解决啊,索爱K510c 2009年02月24日 11:22
@huotu 用咪客很快啊,不会有这种问题,启动系统自带摄相头,好爽。 2009年02月24日 11:42
@改头换面 明天晚上回家还想睡床上吗 2009年02月24日 15:56
DiLink :: Firefox [...]

allowNetworking控制 SWF 文件对网络功能的访问

有同事说某个Flash的插件,放到Qzone,新浪等网站,Flash里的链接点击都不生效了,打开一看,果然。
然后用FireFox打开,点击链接,FlashPlayer报错:
SecurityError: Error #2146: 安全沙箱冲突:http://xxx/xxx.swf 不能调用 navigateToURL,因为 HTML/容器参数 allowNetworking 具有值 internal。
    at global/flash.net::navigateToURL()
然后查查allowNetworking是何方神圣,官网解释:
This HTML parameter governs a number of ActionScript APIs. It has the following possible values:
"all"—the default. No networking restrictions; player behaves normally.
"internal"—SWF files may not call browser navigation or browser interaction APIs, but may call any other networking APIs. [...]

AS3使用HTTPService类访问需要HTTP Basic Authentication认证的URL

在使用API的时候,如嘀咕、Twitter、饭否的API,会需要使用用户名和密码登录,一般都是使用HTTP Basic Authentication认证,使用HTTPService类访问这种URL时,需要设置headers,用户名和密码的格式为“username:password”,并且需要Basic64加密,具体代码如下。

import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.Base64Encoder;
import mx.rpc.http.HTTPService;
URLRequestDefaults.authenticate = false;//设默认为false,否则用户较验错误时会弹出验证框

private var result:XML;
private function initApp():void
{
var base64enc:Base64Encoder = new Base64Encoder;
base64enc.encode("user:password"); //用户名和密码需要Base64编码
var user:String = base64enc.toString();

var http:HTTPService = new HTTPService;
http.addEventListener(ResultEvent.RESULT,resultHandler);//监听返回事件
http.addEventListener(FaultEvent.FAULT,faultHandler); //监听失败事件
http.resultFormat = "e4x";//返回格式
http.url = "http://api.digu.com/statuses/friends_timeline.xml"; 以嘀咕网的API为列
http.headers = {"Authorization":"Basic " + user};
http.send();
}
private function resultHandler(e:ResultEvent):void
{
result = XML(e.result);
test.dataProvider = result.status;//绑定数据
}
private function faultHandler(e:ResultEvent):void
{
//处理失败
}

分享链接到嘀咕网 – DiLink

嘀咕网上线以后,受到一些业界朋友的推荐他好评,出色的界面,不错的用户体验。
小王子说嘀享插件不太好用,不能编辑,限制太多~洁癖的人啊。。。(其实我也。。。)
于是昨晚弄了一个FireFox的扩展,添加一个按钮到FireFox工具栏上,把链接分享到嘀咕网,对于我这种从来不显示书签栏的人(有些分享的插件,是做一个书签,需要显示书签栏,否则不太方便使用),这种方式太方便了~~
放出下载地址:http://app.foxling.cn/dilink/
功能介绍

点击按钮直接分享当前网页
选中页面上的文字,点击按钮,选中的文字将作为嘀咕内容。

安装步骤详解

悄悄放出我在嘀咕网的地址~~http://www.digu.com/foxling 快跟随我的吧,嘿嘿~