虚拟机,编译原理,应用框架

准备写一个世界第一快的js的css3 selector engine

我在看sizzle和peppy的源代码,发现他们的速度还有提升的空间,

我准备使用jit技术实现一个世界最快的javascript css3 selector engine.

css3选择器也有一些不方便

比如说伪类选择器,只运行"且"选择,不运行"或"选择,要"或"的话,把前面的抄下来吧,效率低多了.

经过jit编译过后的selector成为一个函数,接受一个参数ct,表示容器.选择器将从这个容器开始选择.

该函数执行时,直接引用一些编译期间确定的变量,而且避免函数调用(相当于c++内联函数),合并相邻的伪类选择器.

query函数接受参数ql,ct,rs

ql:查询语句

ct:查询容器

rs:查询结果

query函数首先根据ql和ct查询缓存,如果以前用同样的语句和容器查询过并且文档未改变,则有缓存可以直接返回.

将结果合并到rs返回.

如果不存在缓存则查询是否存在ql编译好的selector的缓存,如果以前编译过一次,那么就不用再编译了,直接用缓存里编译好的.

posted on 2008-10-31 00:18  文宇祥  阅读(1032)  评论(1编辑  收藏  举报

导航