源于新的jssc5的设想,开辟基于词法分析和语法分析的高亮器。当然,词法分析和语法分析我还在学习中,编译原理没好好学,大学时间那个悔啊……
简单测试了下,主要是性能方面。hax曾经做过chrome下面正则的测试,实验证明google浏览器对正则的优化真的很牛X!不过我考虑仍将继续基于flash平台来做,原因很显然:词法分析必须遍历字符串,而js的遍历性能目前来看是实在不敢恭维的。
大概排序一下吧:
直接比较字符串最快:s == “string”;
用as3内置的indexOf来寻找其次;
判断charCode和indexOf差不多:比如单个字符是否数字;
用isNaN结合parseInt来判断是否数字就比较慢了,但不限单个字符,大概是charCode的数倍到十倍,所以要综合考虑;
用正则最慢!这和js情况正好相反,但正则功能最强大,不过目前情况来看用到正则的可能性很少。
唔,jssc5搞定后JAse研究就能迈进一大步了。
—-
更新:
发现Array类的push()操作性能居然还不如手动写入?!
真晕啊,不知道Adobe搞什么鬼。
array.push(value)还不如array[array.length] = value;,当然舍却length用计数器还要快一点点。
Posts Tagged ‘as3’
《Fantasy Sky》的进展顺利,一切继续着。今天下午把10种职业基本补齐了,除了小偷还缺4张截图,小事而已。于是想来张全家福,突然发现bug。
同时登陆多个账号时,头几个显示还正常,后面的就看不见前面同张地图内的人了。debug半天,发现数据完全正常,接收发送都处理到了,可真杀死脑细胞啊。
最终在客户端想了个办法把每次socket接收的数据都打印出来看看,终于发现问题所在:
swf在接收socket的数据时,是用触发侦听进行的。然而可能服务器端两次发送的数据由于延迟原因同时到达客户端了,此时由于程序编写的问题,就会出现冲突。
比如接收到 str1 这一段数据,客户端判别应该生成一个人物a;接收到 str2 就该生成b。由于延迟,二者合到一起了,客户端读取的是 str1 + str2 的内容,错误就出现在这里了。
解决得办法就是换用xmlsocket对象,它用\0字符为结尾标识每次传送数据的结束,不会起冲突;又或者仍然用低层的socket对象,它有readInt()方法,可以每次在数据开头设个长度,用来标识此次接收多少字节。
前者容易,后者更强大。综合来说,我先用前者试一试。
这两天在做intel的拼图小游戏,进展很迅速。
期间在记录日志时出了点问题,连续两个urlrequest时候,第二个很容易就被第一个给覆盖掉。料想不会是后端脚本的事,应该是flash的问题。稍微有点时间差的话,就会正常。
很奇特的现象。

本博客所有文章均采用