JS处理base64大字符串时是否需要优化

对于String类型, JavaScript采取了和其他语言都不一样的方式, C/C++是char[], 引用类型;java虽然用了字符池的设计来优化存储空间,但还是引用类型;JavaScript的设计者可能是考虑到客户端脚本简单为主,不像server端语言, 因此将他的String设计成简单类型,也就是字面量的string完全跟Number/Boolean的字面量一样,直接在栈中开辟内存空间。 这样在处理小字符串时客户端应该没什么压力,但是在我们的项目中常常要用到FileReader来解析图片文件,转成base64后,就是一个超大的字符串,在内存中运行,这样一旦对这个变量有任何的操作,就意味着新开辟栈空间, 这样是不是会带来性能上的开销呢?这时候如果以new String来代替字面量,是不是会节约开销呢?以上纯属个人猜测,未验证。

  
//字面量形式:
var aLongStr = "a base64 typed long string...";//create a stack object.
var strRefer = aLongStr;//create another stack object, not a refer.

//new String 形式:
var aLongStr = new String("a base64 typed long string..."); //create a stack object.
var strRefer = aLongStr; // just create a refer to the bellow object.
评论 (0)链接2012-08-31 
德问是一个专业的编程问答社区,请 登录注册 后再提交答案