检查序列化声明的顺序和成员定义的顺序

阅读更多关于《检查序列化声明的顺序和成员定义的顺序》

DataIO_is_realdump用来推断一个对象是否可以直接通过dump内存来完成序列化,如果可以,在load/save时会有极大的性能提高。 继续阅读

febird.dataio vs boost.serialization 运行性能对比

阅读更多关于《febird.dataio vs boost.serialization 运行性能对比》

代码表示的是数据格式,DATA_IO_LOAD_SAVE 在 <febird/io/DataIO.h> 中定义

对于 boost.serializationDATA_IO_LOAD_SAVE 的定义相当于: 继续阅读

febird.DataIO 和 boost.serialization 编译性能对比

阅读更多关于《febird.DataIO 和 boost.serialization 编译性能对比》

C++ 程序的性能,重要的不光是运行性能,还有编译性能。运行性能就不多说了,编译性能往往被大家忽略,但是,想一下,如果编译一次要花一小时,那每天能编译几次?

和 boost.serialization 相比,febird.DataIO 的运行性能和编译性能都压倒性地胜出: 继续阅读

febird.dataio 优化技术

阅读更多关于《febird.dataio 优化技术》

优化技术主要有两点:

1.         优化的inline

a)         频繁调用的函数都使用inline,但是值得注意的是,在inline的时候,只inline最频繁的分支,很少走到的分支使用非inline函数,例如:

继续阅读

最便捷、最强大、速度最快的C++序列化框架【二】

阅读更多关于《最便捷、最强大、速度最快的C++序列化框架【二】》

目前该框架(DataIO)仅支持二进制。想起序列化支持只需要两个宏 DATA_IO_LOAD_SAVE / DATA_IO_LOAD_SAVE_V,对象成员基本上用“&”连接起来,这样,可以写一个简单的语法分析器,在序列化宏中将成员序列化表达转化成字符串, 继续阅读

使用C++模板实现不需要IDL的RPC【二】

阅读更多关于《使用C++模板实现不需要IDL的RPC【二】》

严格讲,是不需要专用的 IDL 语言,传统 RPC 的 IDL 语言 相应的部分 在这里全部是 C++ 语言本身,也可以把它称作 IDL,是由几个宏实现的: 继续阅读

持久化的多键映射,使用BerkeleyDB

阅读更多关于《持久化的多键映射,使用BerkeleyDB》

如前介绍,相当于 std::map<Key1,std::map<Key2,Data> >,但接口也不完全相同,这里只贴代码: 继续阅读

持久化的 map ,使用 BerkeleyDB

阅读更多关于《持久化的 map ,使用 BerkeleyDB》

使用前面介绍的序列化框架,可以非常简单地将Bekeley DB作为存储层,实现一个易于使用的,强类型的,持久化的map。

这个设计的的基本原则就是:模板作为一个薄的、类型安全的包装层,实现层的代码可以多个模板实例来公用,这样不但加快了编译时间,也减小了生成的代码尺寸。 继续阅读

最便捷、最强大、速度最快的C++序列化框架

阅读更多关于《最便捷、最强大、速度最快的C++序列化框架》

迄今为止,我还没找到更优雅、更高效的 C++ 序列化方案,包括但不限于 boost.serialization。如果你发现了更快的,或者更易用的C++原生序列化,请告诉我…… 继续阅读

用C++的高级模版特性实现一个不需要IDL的RPC

阅读更多关于《用C++的高级模版特性实现一个不需要IDL的RPC》

当然,首要的是为了有用,其次是挑战自己驾驭 C++ 的能力,目前已经全部完成,并且取得了非常好的效果。使用该 RPC 的简短示例代码: 继续阅读