改进Boost-searcher搜索引擎项目

改进日志时间格式为可读的日期时间格式

image-20260305231610714

添加高并发负载benchmark测试

  1. 为项目添加查询缓存,减少重复计算

  2. 使用partial_sort优化top-K结果排序,提升大规模数据集性能

  3. Makefile中添加-O3优化标志提升编译后性能

  4. 新增性能测试脚本

1000个用户,一共发起十万请求,和1000个用户发起一百万请求,数据如上

将搜索范围从boost库官方界面,调整至个人博客

  1. python脚本爬取博客html页面,保存本地
  2. 修改parser模块,添加命令行参数 支持解析任意目录下的html 输出到任意目录 并设置任意baseURL

还有哪些可以优化的点?

1. 搜索算法与质量(核心)

这是搜索引擎的灵魂,目前的实现比较朴素。

2. 索引存储与性能(架构)

3. 并发模型与网络

4. 前端体验

5. 运维与监控

改进高并发内存池项目

修复,非必现段错误

  1. 修正Common.h中PAGE_SHIFT定义,Windows为13(8KB),Linux为12(4KB)

  2. 更新SysAlloc和SysFree函数以支持Linux的mmap和munmap系统调用

  3. 修复PageCache中释放大span时SysFree缺少页数参数的问题

  4. 调整CentralCache内存块切分逻辑,防止越界和死循环

  5. 更新CMakeLists.txt中字符集设置,区分Windows和Linux平台

  6. 添加Linux头文件支持并修正PAGE_ID类型定义

优化结果

image-20260306193151538

还有哪些可以优化的点?

高优先级

性能优化(收益会很明显)

可维护性 / 工程化

如果你愿意,我可以下一步直接按“先稳后快”给你出一个最小改动 patch(先修 ListTooLong + 去调试遍历 + RAII 上锁)。

关于_pageMutex的锁竞争导致的性能下降

_pageMutexPageCache全局互斥锁,作用是保护页级共享数据结构在多线程下不被并发破坏。

位置在 PageCache.h

它主要保护两类共享状态:

代码里典型加锁点:

一句话理解:
谁要动 PageCache 的“页桶和页号映射”,谁就得先拿 _pageMutex
代价是它会成为高并发下的热点锁(尤其在 dealloc 路径)。