Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript big-O属性访问性能_Javascript - Fatal编程技术网

Javascript big-O属性访问性能

Javascript big-O属性访问性能,javascript,Javascript,JavaScript属性访问(在当前实现中)的性能特征是什么 假设阵列访问是O(1)安全吗 如果我使用一个对象作为哈希表(带有字符串键),我可以安全地假设O(1)或O(logn)访问时间吗 是否有比其他浏览器或环境快/慢得多的常见浏览器或环境,我应该密切关注 JavaScript标准有什么要说的吗 最重要的是: 对于这种渐进式JavaScript性能问题,我在哪里可以找到好的参考资料 JavaScript中的每个对象都是作为对象哈希实现的,因此没有功能上的差异 例如,检查此测试: var

JavaScript属性访问(在当前实现中)的性能特征是什么

  • 假设阵列访问是O(1)安全吗
  • 如果我使用一个对象作为哈希表(带有字符串键),我可以安全地假设O(1)或O(logn)访问时间吗

  • 是否有比其他浏览器或环境快/慢得多的常见浏览器或环境,我应该密切关注

  • JavaScript标准有什么要说的吗

最重要的是:

  • 对于这种渐进式JavaScript性能问题,我在哪里可以找到好的参考资料

    • JavaScript中的每个对象都是作为对象哈希实现的,因此没有功能上的差异

      例如,检查此测试:

      var arr = [];
      arr[5] = 5;
      arr['5'] = 'not 5';
      console.log(arr.length, arr);
      // output: 6 [undefined, undefined, undefined, undefined, undefined, "not 5"]
      
      当用作位置时,数字是字符串化的

      有关更多信息,请参阅关于JavaScript。特别重要的部分在“阵列”标题下:

      JavaScript中的数组也是哈希表对象。

      性能不是一个真正的问题,除非你有大量的对象要跟踪(比如500000+),在这种情况下,你可能做了一些错误的事情

      你可以做一些优化,但除非你用JavaScript做一些不自然的事情(比如压缩算法……我用JS做了一个LZMA实现……坏主意),否则这些优化就没有意义

      注:


      如果您有一个备用集(比如您只定义了10000个索引中的10个),那么您可能应该使用常规对象。数组将所有10000个索引初始化为“未定义”,而
      Object.keys(obj)
      将只报告您设置的10个索引。这是一个小优化,实际上是有意义的。

      你自己做的研究告诉了你这些问题中的任何一个吗?我不想自己做很多研究,这些研究a)我可能会出错,b)很可能是由比我更精通这一主题的人做的。更新:我愿意知道对象和数组的行为,但我真的想知道大数字会发生什么。无论如何,你可能不需要去500000——如果某个值是O(N^2),那么几千就足够让你开始担心了。阅读链接。数组是哈希表。这意味着查找可能是O(logn)(有很多优化)。我的同事做了一些测试,发现在你超过50000或其他大的数据之前,这一点并不重要。