GitHub - robertdavidgraham/wc2: 研究优化 'wc',即 Unix 单词计数程序

主要观点:通过使用异步状态机解析算法实现wc2程序,该算法比传统wc程序快且更具可扩展性,包含 C 和 JavaScript 版本,分别用于不同场景。
关键信息

  • 传统wc程序在不同输入下性能差异大,如处理非法字符等。
  • 新算法为异步状态机解析,不依赖输入类型,速度稳定且比内置程序快。
  • 包含多种版本如wc2o.c(简化 ASCII 版)、wc2.c(全 Unicode C 版)、wc2.js(JavaScript 版)等。
  • 利用大量基准输入文件如pocorgtfo18.pdf等进行测试,得出不同输入下的性能情况。
  • 异步状态机解析在网络程序中更具重要性,如 Nginx 利用此特性。
  • 项目还包含wctool等辅助工具。
    重要细节
  • 状态机表是简单版和复杂版的区别,简单版为 ASCII,复杂版支持 UTF-8。
  • 处理 Unicode 时需注意多字节字符处理函数等。
  • 不同系统如 macOS 和 Linux 上的wc程序性能不同,clang编译器在 macOS 上优化更好。
  • 测试了指针算术对wc2.c程序速度的影响,有-P选项可进行测试。
阅读 13
0 条评论