6
18
新手上路
经常和这几个出现在面试题里的还有Promise.resolve().then()。
名词解释: 条件存储:条件存储是一种优化技术。编译器可以将 if 语句编译成一种条件存储操作。这种操作仅在特定条件下才会写入数据,从而避免不必要的写操作。在这段代码中,loop->stop_flag 的值只有在其当前值不为零时才会被修改。这避免了不必要的写操作,因为如果 loop->stop_flag 已经是零,则不需要再写一次零。 缓存行:缓存行是处理器缓存的基本单位,通常为 64 字节。缓存用于存储从内存中加载的数据,以加快访问速度。当处理器需要访问某个内存地址时,会先检查缓存中是否存在对应的数据。如果缓存中存在该数据(称为缓存命中),则可以快速访问;如果不存在(称为缓存未命中),则需要从较慢的主存中加载数据。在现代处理器中,缓存写操作可能会使缓存行变脏(dirty),即缓存中的数据与主存中的数据不一致。每次写操作都可能导致缓存行的变脏和随后的写回操作(将缓存中的数据写回主存),这些操作会影响性能。 通过条件存储,如果 loop->stop_flag 本来就是零,则不会进行写操作,避免了缓存行变脏,从而减少了写回主存的开销,提高了缓存的利用效率。
微任务除了nextTick和promise,还有MutationObserver和queueMicrotask。 nextTick属于特殊的高优先级微任务,而promise、MutationObserver和queueMicrotask的优先级一致。 MutationObserver是用来监听DOM的,是浏览器独有的;而nextTick是NodeJS独有的; promise和queueMicrotask在两种环境下都有。
上一篇: 第三周第三天
下一篇: element-resize-detector监听普通元素的实现示例
举报 回复 使用道具 分享