
febird lib
Terark-CTO-雷鹏
Terark可检索压缩技术作者。致力于让数据更小,访问更快。
展开
-
检查序列化声明的顺序和成员定义的顺序
DataIO_is_realdump用来推断一个对象是否可以直接通过dump内存来完成序列化,如果可以,在load/save时会有极大的性能提高。如果dump后,一些成员除了需要byte_swap,而不需要其它任何转化,也可以安全地先dump然后再byte_swap,这样比一个成员一个成员地load/save并且byte_swap要快得多。但是可以引发一个问题,就是如果序列化声明的顺序和成员定原创 2009-04-11 16:15:00 · 1511 阅读 · 0 评论 -
多正则表达式匹配(Multiple Regular Expression Matching)
目前 febird 中的自动机库已支持正则表达式,并且,支持的是多正则表达式匹配:给定 M 个正则表达式,每个正则表达式有一个 [0, M) 的唯一 ID,该算法为这些正则表达式生成一个 DFA。再给定一个输入文本 Text ,如果只计最长匹配,该 Text 可以匹配 M 个正则表达式中的的 K 个在该DFA上运行我的匹配算法,可以在 O(strlen(Text) + K) 的时间原创 2013-11-03 22:22:16 · 7703 阅读 · 15 评论 -
有多个初始状态的 DFA
最近做了一项工作:允许一个 DFA 有多个起始状态(可以称作根: root)。这样有以下几个好处:对于多正则表达式匹配(Multiple Regular Expression Matching)的 DFA在创建多正则表达式匹配的 DFA 的过程中,有一个 DFA 的 Union 操作,这操作通过 NFA 到 DFA 的转化来完成,在这个过程中,如果状态膨胀失去控制(最坏情况是指数级,一般情原创 2013-11-28 22:17:55 · 7157 阅读 · 0 评论 -
多正则表达式匹配工具 的用法
2014年3月25日22:55从 http://code.google.com/p/febird/wiki/MultiRegexMatch 更新至最新版Introduction介绍Compileregex_builder 使用方法命令行选项与参数关于 -d 选项输入文件Regex.txt 的格式一个示例的Regex.txt非常重要!注意事项!匹配接口: 二进制模式原创 2013-12-17 17:34:56 · 9972 阅读 · 27 评论 -
多正则表达式匹配 (Multiple Regular Expression Matching) 中的动态 DFA 算法
前一段时间,在用 多正则表达式匹配工具 用于数十万任意的正则表达式时,以前一直担心的问题终于出现了:NFA 转化 DFA 时的指数爆炸,那样的 DFA 根本创建不出来,因为那些正则表达式之间有不可预料的各种交集!这个问题对我打击很大,我甚至顿时觉得 多正则表达式匹配工具 完全是个废柴,最多,是个玩具!但是,只有挑战,才能激励人的斗志,挖掘人的潜能。我想起了曾经对之不屑一顾的动态 DFA 匹配算原创 2014-01-05 21:43:43 · 6157 阅读 · 5 评论 -
febird.dataio vs boost.serialization 运行性能对比
本博客已迁移至: http://www.nfabo.cn/p/?p=65代码表示的是数据格式,DATA_IO_LOAD_SAVE 在 <febird/io/DataIO.h> 中定义对boost,DATA_IO_LOAD_SAVE 的定义相当于:原创 2009-04-06 20:09:00 · 4714 阅读 · 4 评论 -
最便捷、最强大、速度最快的C++序列化框架
项目地址:http://code.google.com/p/febird最便捷、最强大、速度最快的C++序列化框架。 特别注意:vc6太古老,不符合C++规范,无法使用该框架1. 高性能,速度非常快,比你能找到的同类产品至少快一个数量级2. 在网络通讯,数据库存储中非常好用。3. 预先支持所有基本类型,所有stl容器类型(除stac原创 2008-11-07 18:08:00 · 17118 阅读 · 10 评论 -
避免临时对象的字符串加法
之前我有一篇文章《 C++ 中让对象的拷贝成为 显式 的》,使用类似的技巧,可以避免字符串加法中的临时对象,也许是因为惰性,这个想法一直没有诉诸实现,今天有空把它写了出来。先看看这段代码:std::string a = "A";std::string b = a + "B" + "C" + "D" + "E" + "F";在C++11之前的标准 C++1998/2003 中,原创 2012-12-06 14:04:13 · 2153 阅读 · 2 评论 -
缓存与平行数组在 hash_strmap 和 gold_hash_map 中的应用
2007 年我写过一篇关于平行数组与CPU缓存文章,最近,我在 hash_strmap 和 gold_hash_map 中应用了这种设计思想。hash value cache 对于一些对象,计算它们的 hash value 很昂贵,而对于另外一些对象,计算它们的 hash value 很廉价;所以,我们是否做 hash 缓存对 hash table 性能很重要。更有意思的是,hash原创 2011-10-29 19:51:54 · 2099 阅读 · 2 评论 -
把自动机用作 Key-Value 存储
以前只有代码,最近简单写了一点文档: google code 上的链接(总是最新)自动机是什么DFA 的最小化将 DFA 用做字典无环DFA (ADFA, Acyclic DFA)编译内存用量/查询性能map 与 set自动机实用程序自动机的 C++接口DFA_InterfaceDAWG_Interface超级功能以拼音输入法为例原创 2013-08-15 11:51:38 · 9956 阅读 · 0 评论