- 浏览: 508885 次
- 性别:
- 来自: 初到北京
最新评论
-
javamonkey:
有点老了,有个Teb测试,这个性能测试很标准http://gi ...
几款模板引擎的性能对比 -
greenlaw110:
xuyao 写道sdh5724 写道xuyao 写道很好,nn ...
几款模板引擎的性能对比 -
sefier:
不知道你看的是哪个版本的,现在所看到的版本和你所描述的不一致, ...
Facebook XHP 调研 -
javatar:
我觉得从通用语言去思考可能更有意思,满足八封其实就是一个完备集 ...
五行通天地 八卦定乾坤--打算按照先天八卦的形制重构Lite模版引擎的指令集 -
luo2pei4321:
MVEL的官方例子里面好像只支持Integer和String两 ...
表达式引擎JSEL介绍
文章列表
装载效率测试
测试页面见:test/load-eff-test.html
为了测试结果更显客观,我选择了第三方类库的装载测试:
'com.yahoo.yui.*',
'net.conio.prototype.*',
'net.fckeditor.*',
'org.jquery.*',
'us.aculo.script.*'
共22个脚本文件(对于JSI来说还有诺干包定义文件)。
FF2:
标记导入时间(原始方式):469,469,1047,484,484,437,469,484
同步导入时间:469,453,484,437,469,453
延迟导入时间:921,765,891,906, ...
JSI2Alpha及JSA1beta 发布:
引用JSI简介:
JSI 是一个 开放的、无侵入的 脚本库管理框架,内核不提供任何具体功能,有一些功能子项目,如网页装饰引擎。
JSI2性能测试报告:http://jindw.iteye.com/blog/93118
更多信息请查看:http://www.xidea.org/project/jsi/
JSA简介:
JSA最初是做JSI编译处理的一个小工具,现在也可以用来混淆、压缩脚本。支持swing和ant task两种工作方式。
可以通过webstart启动:启动JSA(允许访问文件系统),沙箱内运行(功能受限)
这次发布的JSI2 ...
刚发布JSA的webstart版,顺便吧这个古董级别的小程序也发布一下。
仅供那些和我一样棋术平平的无聊人士打发时间。
高手就不必了:)
当能,如果是想找个地方出出气,也可以,呵呵。
http://www.xidea.org/webstart/chess.jnlp
测试了一下trimpath模板引擎和一个我以前编写xml模板引擎,显示测试结果,耗时比 :828/16。
太让我振奋了。原想,如果效率太低我就放弃这个项目,貌似结果:这个流行的js模板引擎,和我没做优化的xml模板引擎还有这么大的差距???
仔细检查一下,晕倒,测试模板数据搞错了:(
纠正过来,测试数据显示,trimpath比xml模板引擎要快好几倍:(
而且,如果模板内使用的循环次数越多,差距越大:(
比较扫兴的结果。
决定吧这个东西从jsi系统api中删除。
不过,感觉,虽然有这点差距,xml模板引擎还是可以作为一个备用选择。
基于js标记库,类el表达式,对于熟悉jsp2.0, ...
- 2007-06-08 16:18
- 浏览 5935
- 评论(1)
一直没有找到好用的 javascript格式化工具,不过UE有个非常漂亮的功能,多行编辑,可以轻松的批量缩进。
但是eclipse呢?很遗憾,没有,不过用正则表达式可以轻松完成这个功能,匹配整行,替换时在行前加上缩进空格。
find:^.*
replace With: $0
说到这个正则,鄙视一下js的正则语法,居然匹配组是 $1 $2 $3 ....索引从1开始,但是匹配全部为什么要来个$&? 多么难记??还是eclipse的$0方便
而且js的match函数返回的数组还是 [全匹配,组1,组2....],全匹配索引就是0嘛! 居然要来个$&??
扼杀我们的联想 ...
今天和网友聊起在javascript里面实现DateFormat 的话题。
把想法发布一下,当是笔记。
格式化:
1、先用正则把日期表达式分段:
var tokens = "yyyy-MM-dd(没有时间)".match(/y+|M+|d+|m+|[^yMdm]+/g)
//结果数组为:yyyy,-,MM,-,dd,(没有时间)
2、将其中的yyyy MM dd 替换成相映的处理对象
3、格式化时,先复制数组,依次遍历,如果元素是处理对象,那么元素值替换成处理结果。
4、将新数组join。即为需要结果。
5、parse时。先复制 ...
引用为了jsi2 alpha的尽快发布,我对jsi 的系统api重构了一下,删除了一些不够成熟或者没有必要的api(将他们拖到org.xidea.* 命名空间下)。
更新(2007-6-9)
#js.html //保留这个包,因为这些实在太常用了,
* BrowserInfo
//保留Decorator是因为装饰器初始化,还是受到点特别关照
* Decorator
* EventUtil
* StyleUtil
#js.util//保留这个包主要因为异步装载用到这些类库
* LoadTask
* Request
* ScriptLoadTask
* TaskQueue
链接:
JSI ...
引用JSI 自身提供一些常用API,数量极少,尽量以一种正式的风格提供,尽量回避争议。
有些是启动文件用到的,如任务队列支持,还有如装饰引擎直接用到的,如BrowserInfo、EventUtil、StyleUtil等。
对于启动文件中未直接用到的,如果风格的争议太大,都将剔除出去。
BrowserInfo对象:
/**
* BrowserInfo 对象,用于判断浏览器的相关信息,如浏览器类型、quirks模式、客户端语言(简体中文?英语..未实现)、操作系统(未实现)等等。
* @public
*/
var BrowserInfo = {
isIE : falseChec ...
循环反转示例:
for(var i = 0;i<data.length;i++){
//.
}
//倒转后代码
for(var i = data.length-1;i>=0;i--){
//.
}
这类优化的作用是明显的,但是具体有多大作用呢?
用一个长度为100 000 的数组测试一下:
515/313
500/313
516/312
516/328
516/328
可见,循环反转后,只需要原来3/5的时间.
但是,这种东西到底有多大价值?FF上200次循环仅需要1毫秒的时间.所以,个人认为,只要循环的内容不是太长,使用不算 ...
- 2007-05-31 12:29
- 浏览 4561
- 评论(1)
在JSI的实现中,有这样一种需求,将有自带命名空间的脚本元素名数组转换成没有命名空间的变量名数组.
比如 :
['YAHOO.util.XXXX,YAHOO.util.YYYY,YAHOO.event.XX'] ->['YAHOO']
以前一直是较长的一段处理代码,今天突发奇想,这个用正则表达式处理效果如何?
于是,就这种处理,分别测试了正则表达式和javascript代码的效率.
测试数据如下(regTime /codeTime):
620/4536
729/4068
719/4250
645/4152
655/4642
FF和IE结果差不多,上面是FF2的数据
总结:
经常看 ...
一直都认为,javascript的函数调用是一个相对耗时的操作。
开始JSI的优化,这些问题现在必须认真考虑了,测试一把:
一个简单的++操作,直接操作和函数内操作(注,函数参数对原始类型是值传递,所以这不会影响被传入的 ...
- 2007-05-29 18:06
- 浏览 4286
- 评论(0)
前几天无意中看到一个网友blog上关于这个循环效率的问题,说要尽量避免使用。
有点害怕,我在JSI中可是用了不少,呵呵。
测试一下,负担终于可以放下来了:
测试对象:
一个对象模拟map,测试for in 循环
两个数组,测试for(;;)循环
连续4次运行时间比。
957/1278;955/1357;1014/1282;968/1392
明显,要实现类似map的功能,还是for in 快点。
上面的数据是ff2上的结果,ie7上也差不多,差距更小一点。
测试代码:
js 代码
function C(i){
return i<62?
...
刚刚修正了一个JSA的bug。
顺便测试了一下文本压缩的性能,和纯packer 压缩,ShrinkSafe+packer压缩。
压缩大小:
jquery-jsa-s.js(JSA的语法压缩):29766
jquery.compressed.js(ShrinkSafe语法压缩):33992
jquery-jsa-st.js(JSA的语法压缩+文本压缩):19526
jquery-packer.js(Packer文本压缩):20977
jquery.compressed-packer.js(ShrinkSafe语法压缩+Packer文本压缩):21839
有点奇怪的是,文本压缩和语法压缩是 ...
以前JSI的依赖管理设置时,依赖元素可以用* 、含有*的匹配模式、数组和单个元素。
感觉这样处理难度增加了很多,决定吧匹配模式去掉,只支持 *、数组和单个元素
含有*的匹配模式可以用精确的数组代替。
原来的做法太复杂了,改简单一点,提高效率,便于优化。
- 2007-05-21 13:17
- 浏览 4047
- 评论(0)
JSI 日志是JSI内核中唯一的一个具体功能。
在2.0preview 中,默认是输出倒错误控制台的。
实现方式
setTimeout(function(){
throw new Error(错误信息)
},0)
但是这样貌似有个异步代码错误插入的问题(当有程序异步调用时,setTimeout抛出的错误可能会导致异步代码中抛出异常,就像错误发生在异步代码中一样)。
所以这个问题必须解决了。
原先的想法是模仿log4javascript。 那样,在日志窗口,可以实现很多复杂功能。
但是,因为日志系统时内核的部分,不想做的太复杂。打消了这个念头。
不过,可以实现这个功能,在托管类库中,用户 ...
- 2007-05-18 20:09
- 浏览 4337
- 评论(0)