各位观众老爷们,大家好!我是你们的老朋友,BUG终结者。今天咱们不聊框架,不聊设计模式,来点硬核的,聊聊JS的“CPU微架构”级别优化,听起来是不是有点吓人?别怕,其实没那么玄乎,今天的主题就是:Cache Line Padding 与 False Sharing。 咱们先来个开胃菜,想象一下,你去超市买东西,你肯定不会只买一根葱就走吧?一般都会顺便买点蒜、姜啥的。CPU也是这么想的,它从内存里拿数据,也不会只拿你想要的那个,而是把附近的一堆都拿走,放到它的“小金库”里,这个“小金库”就是Cache(缓存)。 好,现在正式开始今天的“表演”。 一、什么是Cache Line? Cache Line,顾名思义,就是Cache里的一行。它就像超市货架上的一排商品,CPU每次从内存拿数据,都是以Cache Line为单位拿的。Cache Line的大小通常是64字节(也有32字节或128字节的,但64字节最常见)。 所以,即使你只需要一个字节的数据,CPU也会把这个字节所在的Cache Line都拿过来。这就是Cache Line的基本概念。 二、Cache的层级结构 CPU的缓存可不止一层 …
继续阅读“JS `CPU Micro-Architecture` 级别优化:`Cache Line Padding` 与 `False Sharing`”