另一方面来自于 sonic-JIT 能控制底层 CPU 指令,在运行时建立了一套独立高效的 ABI(Application Binary Interface)体系:- 将使用频繁的变量放到固定的寄存器上(如 JSON buffer、结构体指针),尽量避免 memory l... 下面是一段 sonic 中 skip 空白字符的算法代码:```#if USE_AVX2 // 一次比较比较32个字符 while (likely(nb >= 32)) { // vmovd 将单个字符转成YMM __m256i x = _mm256_load_si256 ((c...
分析一下这里`add`指令的语义,需要两个操作数,源操作数 SRC 和目的操作数 DEST,实现的功能是`DEST = DEST + SRC`。这里 SRC 是立即数 1,DEST 是 i 的内存地址,CPU 需要先在内存中读出 i 的内容,然后加 1,最后把结果写入 i 所在的内存地址。总共产生了两次串行的内存操作。如果计算架构复杂一点,有 2 个 CPU 核 CoreA 和 CoreB 的情况下,上面的`i++`代码就不得不考虑数据一致性的问题:#### 1.1.1 并发写问题如果 CoreA 正在...
2016 年 5 月继 Kubernetes 之后成为第二个正式加入 CNCF 基金会的项目,同年 6 月正式发布 1.0 版本。2017 年底发布了基于全新存储层的 2.0 版本,能更好地与容器平台、云平台配合。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/cc0c6a8a3f934b798c09c0cf873879aa~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1714407640&x-signature=4bNwwJfrnkY7B3pUo8Z4Iww%2BD9Y%3D)...