- 博客(15)
- 资源 (8)
- 收藏
- 关注
原创 很久以前发现的 vc2008 的一个bug(关于模板匹配)
使用操作符重载时,出现模板匹配错误,bug 的出现很简单,下面是代码:#include #include struct A1{ template void operator& x) { printf("void operator& x)/n"); }};struct A2{ void operator<
2009-04-18 23:44:00 1160
原创 vc2008 比 gcc4.3 真是差太多了
项目地址:http://code.google.com/p/febird 用gcc4.3重新编译了一下febird,出现了很多错误,仔细观察,这些错误都是因为不符合C++标准,重新改成符合标准的,比想象的改动量要大。又测试了一下纯 C 实现的 algorithm: febird.c,是从VC2008的stl代码改过来的,在VC2008中测试比std::sort快20%,但是一到gcc中,却
2009-04-18 23:25:00 1578
原创 vc 鲜为人知的 __if_exists
msdn 中有这样一个示例:// the__if_exists_statement.cpp // compile with: /EHsc #include template class X : public T { public: void Dump() { std::cout ::Dump(
2009-04-15 12:48:00 2169
原创 检查序列化声明的顺序和成员定义的顺序
DataIO_is_realdump用来推断一个对象是否可以直接通过dump内存来完成序列化,如果可以,在load/save时会有极大的性能提高。如果dump后,一些成员除了需要byte_swap,而不需要其它任何转化,也可以安全地先dump然后再byte_swap,这样比一个成员一个成员地load/save并且byte_swap要快得多。但是可以引发一个问题,就是如果序列化声明的顺序和成员定
2009-04-11 16:15:00 1488
检查序列化声明的顺序和成员定义的顺序
项目地址:http://code.google.com/p/febird DataIO_is_realdump用来推断一个对象是否可以直接通过dump内存来完成序列化,如果可以,在load/save时会有极大的性能提高。如果dump后,一些成员除了需要byte_swap,而不需要其它任何转化,也可以安全地先dump然后再byte_swap,这样比一个成员一个成员地load/save并且by...
2009-04-11 16:12:48 146
febird.rpc echo 代码
// echo.hclass Echo : public GlobaleScope{public: BEGIN_RPC_ADD_MF(Echo) RPC_ADD_MF(echo) END_RPC_ADD_MF() // 3rd macro param is ';' means non-pure-virtual RPC_DECLARE_MF_EX(echo,...
2009-04-08 12:12:48 141
febird.rpc 实现技术
使用C++模板实现不需要IDL的RPC IDL的数据定义由几个宏定义实现: RPC_DECLARE_MF(FunName, ArgList)声明函数,ArgList必须带括号BEGIN_RPC_ADD_MF_EX(ThisClass,ClassName)BEGIN_RPC_ADD_MF(ThisClass)开始注册函数E...
2009-04-08 11:26:45 473
febird.dataio 序列化宏
序列化宏DATA_IO_LOAD_SAVE(Class,Members)在类定义内调用,无版本,可以优化DATA_IO_LOAD_SAVE_E(Class, Members)在类定义外调用,无版本,可以优化DATA_IO_LOAD_SAVE_V(Class, CurrentVersion, Members)在类定...
2009-04-08 11:23:03 199
C 语言实现的 stl-like 算法
使用类似BOOST.PP技巧,自动生成代码,效率上小胜stl,主要抽象出一般的(sort/heap/search)算法中的compare,按成员类型、偏移、类尺寸分派至不同函数;性能比stl相应算法还略高,用法更简单:#include <febird/c/algorithm.h>using namespace std;struct A { int x, y; }; ...
2009-04-08 10:46:38 254
原创 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 4678 4
febird.dataio vs boost.serialization 运行性能对比
代码表示的是数据格式,DATA_IO_LOAD_SAVE 在 <febird/io/DataIO.h> 中定义对boost,DATA_IO_LOAD_SAVE 的定义相当于:#define DATA_IO_LOAD_SAVE(Class, Members) \ friend class boost::serialization::access; \ te...
2009-04-06 20:09:00 126
原创 febird.dataio和boost.serialization 编译速度对比
项目地址:http://code.google.com/p/febird 和boost.serialization性能对比运行性能以下数据是对POD数据,都使用典型用法。febird使用DATA_IO_LOAD_SAVE(Class, &a&b&c) boost也使用这样的简化形式:#define DATA_IO_LOAD_SAVE(Class, Members)
2009-04-06 20:07:00 3022 2
febird.dataio和boost.serialization性能对比
和boost.serialization性能对比运行性能以下数据是对POD数据,都使用典型用法。febird使用DATA_IO_LOAD_SAVE(Class, &a&b&c) boost也使用这样的简化形式:#define DATA_IO_LOAD_SAVE(Class, Members) \ friend class boost::s...
2009-04-06 20:07:00 115
原创 febird.dataio 优化技术
项目地址:http://code.google.com/p/febird 优化技术主要有两点:1. 优化的inlinea) 频繁调用的函数都使用inline,但是值得注意的是,在inline的时候,只inline最频繁的分支,很少走到的分支使用非inline函数,例如:void InputBuffer::ensureRead(voi
2009-04-04 12:45:00 1634
febird.dataio 优化技术
优化技术主要有以下几点:1. 优化的inlinea) 频繁调用的函数都使用inline,但是值得注意的是,在inline的时候,只inline最频繁的分支,很少走到的分支使用非inli
2009-04-04 12:45:00 305
febird C++ 库(附带所有源码)
2009-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人