当前位置: 首页 > news >正文

拼音词典的野路子

比如 王二姐 的 拼音是 wangerjie ,查词典时用下列字符串都要能找到:werj wangerj werjie

我们可以建个这样的目录树:wang/er/jie,然后用shell提供的glob去找 w*/er/j* 下的 所有文件,其中一个叫 王二姐 。

当然是开玩笑。首先每个目录/文件占了4KB,其次问了半天AI有无高效GLOB算法,它总免不了

for s in strings

fd is a 用Rust写的 program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. 〔github

Regular expression (default) and glob-based patterns.
Very fast due to parallelized directory traversal.

Let's search my home folder for files that end in [0-9].jpg. It contains ~750,000 subdirectories and about a 4 million files. 

find耗时约20秒;fd约0.9秒。


 

我觉得vector<string>还是不快。

这样呢?每个音节定长6个字母,如"chuang", "wang--", "er----", "w?????" AI写不出针对这个的二分搜索。

我记得我以前用整数来表示音节,用了点位操作。这个感觉没啥意思,比较low.

华容道程序改用块的类型来判断重复局面后速度一下子快很多,比低层换map, hash等高档。

推箱子我想不出启发函数,不过好像也没人想了出来。


 

好像#include <regex>后,程序的编译速度就慢了很多,用上预编译头文件效果也不明显。

/usr/include/c++/12/tr1/regex 2727行

/usr/lib/llvm-14/include/c++/v1/regex 6833

但clang++比g++编译起来快一点点。

有些单头文件项目有点鸵鸟(头文件很长)。可能把#include <regex>的放在一个源文件里,定型后每次link它的.o才是最快的方式。


问AI RE2是Google开源的正则表达式库。在都编译了正则表达式的情况下,比C++ 11的regex快么?快多少?有实测数据么?

节选它的回答:

  • 根据参考信息,在都编译了正则表达式的情况下,RE2 通常比 C++11 的 std::regex 更快,但具体的性能提升幅度取决于具体的正则表达式模式和使用场景。‌
  • RE2采用确定性有限自动机(DFA)实现,避免了传统回溯引擎(如 PCRE、Python 的 re 模块)在复杂模式下可能出现的性能灾难(如指数级时间复杂度的“回溯爆炸”)。‌其最显著的特性是保证匹配时间‌线性‌于输入字符串的长度。‌
  • C++11 的 std::regex 是一个功能完整的正则表达式引擎,支持复杂的特性(如回溯、环视等),但这也意味着其实现更复杂,性能开销相对较大。‌虽然 std::regex 在编译后可以重复使用,但其底层实现(通常是基于 NFA 的)在处理某些复杂模式时,性能可能不如 RE2 稳定。‌
  • 对于动态正则表达式(如 std::regex),每次构造对象时都需要解析和编译模式字符串,这会产生显著的延迟。在 less_slow.cpp 的基准测试中,std::regex 的编译开销约为 ‌2000 纳秒‌。‌
  • 在长文本匹配场景下,std::regex 的单次匹配耗时约为 ‌22 微秒‌。‌
  • 如果您需要处理大量数据或对性能有严格要求,RE2 是一个值得考虑的选择。

 

http://www.rkmt.cn/news/52581.html

相关文章:

  • 网络分析模型九
  • 抖音视频批量提取工具(增加新功能 ,新功能介绍),通过关键词搜索进行视频提取下载软件
  • 2025-11-18 vue3+ts项目报错:TypeError: Failed to fetch dynamically imported==》script没有指定使用lang=ts
  • 2025 年 11 月新风系统厂家推荐排行榜,沈阳/大连/鞍山/哈尔滨/内蒙古,电竞网咖/酒店/棋牌室/KTV/别墅/学校/诊所/养殖基地,全热交换/除湿/加湿/静音/防冷凝水/节能/耐用/口碑好
  • java 调用linux命令
  • java 读取文件linux文件
  • java 上传 linux
  • 获取抗菌-抗癌-抗炎-抗氧化序列
  • 黑马程序员SpringCloud微服务开发与实战- Docker-01
  • 11-17午夜盘思
  • 葫芦娃,要远离小心毒蛇和蝎子。
  • 屋顶望月
  • 团队管理与技术驱动
  • Mastercam2021软件界面
  • 用 Python 和 Tesseract OCR 识别复杂验证码
  • 用 Go 进行验证码识别
  • Spring AI Alibaba 项目源码学习(十)-Interceptor
  • 今日复盘
  • 13 个 pytest 宝藏插件推荐!(存存存)
  • java 1.8 linux
  • 事件循环其实很简单!
  • Upgrade Your Key Programming: New Style CG A22-3+1 Flip-4BTN Wire Remote for CGDI K2 (5pcs/lot)
  • 深入解析:使用 Triton 实现 Flash Attention2 - 让大模型训练飞起来
  • 题解:P8819 [CSP-S 2022] 星战
  • Java集合之【CopyOnWrite和Collections.synchronizedList()的区别】
  • 20232324 2024-2025-1 《网络与系统攻防技术》实验六实验报告
  • 复杂状态与数据流管理:分布式定时任务系统的设计
  • 【第6章 字符串】Python 字符串常用操作完全教程(含代码演示)
  • Sora 2 Cameo多角色上传+Remix二创功能API接入教程,史低0.08/条
  • 第28天(简单题中等题 二分查找)