SIMD向量化:为什么一行代码能让性能提升10倍

2019年,Daniel Lemire和Geoff Langdale发表了一篇论文,展示了一个令人惊讶的结果:他们的JSON解析器simdjson在单核上达到了每秒解析数GB JSON数据的速度,比当时最快的C++ JSON库快了4倍。这个性能飞跃的核心秘诀只有一个——SIMD向量化。 ...

14 min · 6881 words

编译器的循环优化技术:从循环展开到分块,为何几行代码的改动能让程序快十倍

计算机科学领域存在一个广为流传的二八定律:程序80%的执行时间耗费在20%的代码上,而这20%的代码中,循环结构占据主导地位。正因如此,循环优化成为编译器技术中最核心的研究方向之一。 ...

7 min · 3403 words

数据库查询引擎为何跑不过手写代码?从火山模型到编译执行的三十年突围

2008年,一位数据库研究员做了一个简单的实验:他用C++手写了一段处理TPC-H Query 1的代码,然后与当时最先进的数据库系统对比性能。结果令人震惊——手写代码比数据库快了整整一个数量级。这个结果刺痛了数据库社区:为什么精心设计的查询引擎,竟然输给了几行手写的循环? ...

9 min · 4500 words

哈希表的七十年演进:从链表法到Swiss Table的工程智慧

1953年1月,IBM研究员Hans Peter Luhn在一篇内部备忘录中提出了一个看似简单的想法:把数据放进"桶"里以加速查找。他当时的目的是解决一个日益紧迫的问题——科学文献的数量正以指数级增长,人工索引已经跟不上节奏。Luhn可能没想到,这个为了信息检索而设计的"桶"方案,会在七十年后成为计算机科学中最核心的数据结构之一。 ...

12 min · 5841 words