Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

V8中字符串转数字的结果会缓存?

  今天在V8的runtime.js中看到这样一个代码 function ToNumber(x) {
  if (IS_NUMBER(x)) return x;
  if (IS_STRING(x)) {
    return %_HasCachedArrayIndex(x) ? %_GetCachedArrayIndex(x)
                                    : %StringToNumber(x);
  }
  if (IS_BOOLEAN(x)) return x ? 1 : 0;
  if (IS_UNDEFINED(x)) return $NaN;
  return (IS_NULL(x)) ? 0 : ToNumber(%DefaultNumber(x));
}
  字符串转数字居然使用了缓存!?于是我做了下测试。。。 var a,b,t,i,l;

a=[],b=[],l=1E6;
for(i=0;i<l;i++){
  a.push(i+"");
  b.push("9999999");
};

t=new Date;
for(i=0;i<l;i++)1*a[i];
document.write(new Date-t,"<br/>");

t=new Date;
for(i=0;i<l;i++)1*b[i];
document.write(new Date-t,"<br/>");

  看到这个结果我下巴都掉到地上了,果了个然的Chrome有缓存。而且仅Chrome有,IE和FF都不搞这个。不愧是武装到牙齿的Chrome。不过我觉得这绝对是奇技淫巧,不值得学习。优化东西应该更全面的优化,不是这样零零碎碎的搞一大堆。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^