04 2009 档案

很久以前发现的 vc2008 的一个bug(关于模板匹配)
摘要:使用操作符重载时,出现模板匹配错误,bug 的出现很简单,下面是代码:#include #include struct A1{ template void operator& x) { printf("void operator& x)/n"); }};struct A2{ void operator void operator void operator<<(T& x) { printf("void operator<<(T& x)/n"); }};int main(int argc, char* 阅读全文

posted @ 2009-04-18 23:44 能发波 阅读(175) 评论(0) 推荐(0)

vc2008 比 gcc4.3 真是差太多了
摘要:项目地址:http://code.google.com/p/febird用gcc4.3重新编译了一下febird,出现了很多错误,仔细观察,这些错误都是因为不符合C++标准,重新改成符合标准的,比想象的改动量要大。又测试了一下纯 C 实现的 algorithm: febird.c,是从VC2008的stl代码改过来的,在VC2008中测试比std::sort快20%,但是一到gcc中,却比std::sort慢了一倍还不止!不知到dinkware怎么写的。他有没有和sgi的比较过。重新研读了一下 gcc4.3 的 algorithm代码,gcc.stl.sort把insertion_sort放到 阅读全文

posted @ 2009-04-18 23:25 能发波 阅读(111) 评论(0) 推荐(0)

vc 鲜为人知的 __if_exists
摘要:msdn 中有这样一个示例:// the__if_exists_statement.cpp // compile with: /EHsc #include template class X : public T { public: void Dump() { std::cout ::Dump()" x1; X x2; x1.Dump(); x2.Dump(); __if_exists(::g_bFlag) { std::cout void f... 阅读全文

posted @ 2009-04-15 12:48 能发波 阅读(217) 评论(0) 推荐(0)

检查序列化声明的顺序和成员定义的顺序
摘要:DataIO_is_realdump用来推断一个对象是否可以直接通过dump内存来完成序列化,如果可以,在load/save时会有极大的性能提高。如果dump后,一些成员除了需要byte_swap,而不需要其它任何转化,也可以安全地先dump然后再byte_swap,这样比一个成员一个成员地load/save并且byte_swap要快得多。但是可以引发一个问题,就是如果序列化声明的顺序和成员定义的顺序不同,并且推断结果表明DataIO_is_realdump为真,真正序列化的顺序就就是成员定义的顺序,和序列化声明的顺序不同,而序列化声明的顺序才是调用者真正的意图。一开始没有仔细考虑这个问题,只 阅读全文

posted @ 2009-04-11 16:15 能发波 阅读(199) 评论(0) 推荐(0)

febird.dataio vs boost.serialization 运行性能对比
摘要:项目地址:http://code.google.com/p/febird代码表示的是数据格式,DATA_IO_LOAD_SAVE 在 中定义对boost,DATA_IO_LOAD_SAVE 的定义相当于:#define DATA_IO_LOAD_SAVE(Class, Members) \ friend class boost::serialization::access; \ template \ void serialize(Archive & ar, const unsigned int version) \ { ar Members; }数据格式:struct... 阅读全文

posted @ 2009-04-06 20:09 能发波 阅读(257) 评论(0) 推荐(0)

febird.dataio和boost.serialization 编译速度对比
摘要:项目地址:http://code.google.com/p/febird和boost.serialization 编译速度对比运行性能以下数据是对POD数据,都使用典型用法。febird使用DATA_IO_LOAD_SAVE(Class, &a&b&c)boost也使用这样的简化形式:#defineDATA_IO_LOAD_SAVE(Class,Members) /friend classboost::serialization::access; /template /void serialize(Archive& ar,const unsigned int v 阅读全文

posted @ 2009-04-06 20:07 能发波 阅读(191) 评论(0) 推荐(0)

febird.dataio 优化技术
摘要:项目地址:http://code.google.com/p/febird优化技术主要有两点:1. 优化的inlinea) 频繁调用的函数都使用inline,但是值得注意的是,在inline的时候,只inline最频繁的分支,很少走到的分支使用非inline函数,例如:void InputBuffer::ensureRead(void* vbuf, size_t length){ // 为了效率,这么实现可以让编译器更好地inline这个函数// inline 后的函数体并尽可能小 if (m_cur+length ()&a&b&c&d&e&f&a 阅读全文

posted @ 2009-04-04 12:45 能发波 阅读(222) 评论(0) 推荐(0)

导航