那伤。

文章 评论 浏览 27

那伤。 2022-05-04 13:55:41

个人猜想:

  1. 对于两棵树的比较,最简单的就是遍历,两层嵌套就是 O(n^2)
  2. 假设每个节点都要做更新操作,那就是再加个 O(n)。加起来就是 O(n^3)

vue的更新策略就是:深度优先、同层比较。就是只比较同层级,也就是 O(n)

第 97 题:React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的?

那伤。 2022-05-04 13:48:38

这个规则是不是可以总结成:
不同类型时;根据符号两边的数据类型按照优先顺序做隐式转换
优先级为,
1、对象
2、字符串
3、数字

对象会优先转化成数字或字符串(根据判断的另一个数据类型)再进行比较;
其中当有布尔对象时,转化为数字比较:
console.log(true == ['true'])//false
console.log(false == [])//true

JavaScript 深入之类型转换(下)

那伤。 2022-05-03 04:15:21

先说结果,大概30秒多点,30秒是因为每个等待10秒,同步执行。
其实还有一个变种:

function wait() {
  return new Promise(resolve =>
    setTimeout(resolve, 10 * 1000)
  )
}

async function main() {
  console.time();
  let a = wait();
  let b = wait();
  let c = wait();
  await a;
  await b;
  await c;
  console.timeEnd();
}
main();

这个的运行时间是10s多一点,这是因为:a,b,c的异步请求会按顺序发起。而这个过程是不需要互相依赖等待的。等到wait的时候,其实是比较那个异步耗时最多。就会等待最长。最长的耗时就是整体的耗时。

如果在业务中,两个异步没有依赖关系。应该是后面这种写法。

第 130 题:输出以下代码执行结果,大致时间就好(不同于上题)

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文