使用Array,Object literal或JSON使用javascript可以获得更好的性能?

时间:2014-02-28 16:39:55

标签: javascript jquery json object-literal

我陷入困境,因为我需要选择表现最佳的选项。

我现在拥有的是一个简单的数组:

var array = [
   '/index1.html',
   '/index2.html',
   '/index3.html'
];

这个数组只包含大约60个选项,但由于我需要按语言分隔,我正在考虑其他选项,如对象文字或JSON格式,因此它将包含所有语言和大约1000个选项。

var obj = {
            'en' : {
                'title' : 'bla',
                'url':'bla bla bla'                 
            },
            'de' : {
                'title' : 'bla',
                'url':'bla bla bla'                 
            },          
        };

问题是你认为最适合这个的问题是什么? 谢谢。

2 个答案:

答案 0 :(得分:3)

对象文字和JSON是一回事(更正:参见昆汀的评论)

如果您正在搜索某个值,那么JSON可以获得更好的性能,因为它是一个hashmap实现,因此查找时间将为O(1)。

JSON也更灵活,因为您可以在JSON中使用数组,也可以使用命名键等。

那就是说,我不担心这里的性能提升。他们可能是微不足道的。


如果您尝试将HTML页面映射到某种语言,则可以将URL存储在由语言缩写('en','de'等)键入的JSON中,或者您可以使用约定来命名你的文件(index-en.html,index-de.html)。这是你的选择。

答案 1 :(得分:1)

从2019年开始,推荐的方法是将单个json字符串文字加载到JSON.pase中。

观看以下2019年Chrome开发者峰会视频:Faster apps with JSON.parse

  

只要仅对JSON字符串求值一次,JSON.parse   与JavaScript对象文字相比,这种方法要快得多,   特别是对于冷负荷。一个好的经验法则是应用   技术用于10 kB或更大的物体-但与以往一样   绩效建议,在做出任何建议之前先测量实际影响   变化。   -The cost of parsing JSON(V8博客)

对于benchmarks,对于大型JSON文件,JSON.parse在对象文字上的性能提升可能非常可观(20%至70%)