文章目录
- Daniel Lemire 简介
- 一、个人履历
- 二、核心研究方向
- 三、知名开源项目与成果(工业界广泛落地)
- 1. simdjson
- 2. Roaring Bitmap(咆哮位图)
- 3. fast_float
- 4. simdutf
- 5. ada‑url
- 6. binary fuse filter & constmap
- 7. FastPFor
- 四、代表性学术/博客思想(你文档里的重点)
- 五、特点
Daniel Lemire 简介
Daniel Lemire 是加拿大魁北克大学TÉLUQ分校的计算机科学全职教授,世界知名的高性能软件、SIMD向量化算法专家,个人博客网站:lemire.me。
斯坦福/Elsevier 2025统计,他位于全球前2%高被引科学家;GitHub全球顶尖C++开源开发者,大量成果被浏览器、数据库、编程语言标准库采纳。
https://github.com/lemire
一、个人履历
- 教育背景:多伦多大学学士、硕士;蒙特利尔综合理工工程数学博士。
- 工作经历
- 2002‑2004:加拿大国家研究院NRC研究员,领导电子健康研究组,提出协同过滤Slope‑One算法(早期推荐系统经典)。
- 2004至今:TÉLUQ(魁北克大学)计算机教授,2009晋升正教授;曾任系主任;NSERC加拿大自然科学基金计算机委员会联合主席;期刊《Software: Practice and Experience》编委。
- 同时是博主、开源作者,出版多本编程与数据科学书籍,发表百余篇同行评审论文。
二、核心研究方向
聚焦面向现代CPU的高性能算法,大量利用SIMD(NEON/SSE/AVX‑512/SVE2)指令:
- 高速文本解析:JSON、URL、数字解析、Unicode转码校验;
- 高性能数据结构:压缩位图、binary fuse filter(二进制保险丝过滤器,immutable静态映射);
- 基础性能:溢出检测、前缀和、搜索算法、分支预测、函数调用开销、浮点数/十六进制序列化;
- 数据库、大数据索引、信息检索算法。
他的博客(lemire.me/blog)大量公开性能实验、基准测试,你前面看到的:无符号乘法溢出检测、SIMD‑Quad四叉搜索、constmap、SVE2字符匹配、前缀和、函数调用开销、浮点数转字符串、UTF‑16校验,全部来自他博客文章。
三、知名开源项目与成果(工业界广泛落地)
1. simdjson
SIMD向量化JSON解析库,单核实现GB/s级别的JSON完整解析与校验。被 Node.js、Chrome/Edge/Safari浏览器引擎、Apache Doris、Shopify、Facebook等大量系统使用;C++26编译期反射也与simdjson结合做编译期JSON序列化。
2. Roaring Bitmap(咆哮位图)
高性能压缩位图索引,数据库领域事实标准。被 Apache Spark、Lucene、Elasticsearch、Druid、Apache Pinot、Git、YouTube数据库引擎采用,用于集合交并差运算,节省大量内存与CPU开销。
3. fast_float
高速浮点数字符串解析库(Eisel‑Lemire算法),集成进GCC libc++、LLVM libc、Rust标准库、Chromium浏览器,实现GB/s级数字解析。
4. simdutf
SIMD加速Unicode转码、UTF‑8/UTF‑16校验库,V8引擎、Node.js内部使用,每秒处理数十亿字符的转码校验。
5. ada‑url
高性能URL解析库,Node.js已集成。
6. binary fuse filter & constmap
Binary fuse filter是新一代静态布隆变种,构建不可变映射constmap(Go库),内存占用极低、查找极快;X平台(Twitter)用于大规模过滤查找。
7. FastPFor
整数压缩库,信息检索、数据库倒排索引广泛使用。
四、代表性学术/博客思想(你文档里的重点)
- 无符号乘法溢出判断:对无符号数
a*x,溢出等价于(a*x)/a != x;但工程更推荐和阈值直接比较。 - SIMD‑Quad搜索:针对16bit短整型有序数组,结合四等分插值搜索 + SIMD并行比对,比标准std::binary_search更快;利用现代CPU内存级并行与向量指令。
- CPU分支预测实验:现代CPU分支预测器可以记忆上万条分支(AMD Zen5可达3万),小数据集基准测试会被分支预测器干扰,不能直接代表真实业务性能。
- 函数调用开销:微小简单函数,函数调用开销巨大,inlining内联收益极高;长字符串处理,函数调用开销可以忽略不计。
- ARM SVE2指令集:SVE2的
match/nmatch指令可以单指令完成集合字符匹配,比传统NEON查表方案更简洁快速。 - 前缀sum(scan)向量化:普通循环前缀sum存在数据依赖;利用NEON的de‑interleave(vld4q)分多轨道并行计算,速度可以达到标量2倍以上。
- 浮点数转十进制字符串:Dragonbox、Schubfach、Ryū算法,对比老旧Dragon4,三十年间性能提升约10倍。
五、特点
- 重视实测基准测试,大量真实硬件(Intel、AMD、Apple M系列、AWS Graviton ARM)跑对比,不只做理论分析;
- 关注真实硬件行为:CPU流水线、分支预测、cache、SIMD指令集差异;
- 产出不只是论文,而是可直接投入生产的高质量开源代码;
- 博客通俗易懂,很多文章把底层CPU性能问题讲清楚,是系统性能优化非常好的学习资源。