小技巧,大智慧:%n of sscanf
scanf 系列中有个函数 sscanf,可能有人用过,它的普通用法,我就不讲了,可以参考这里:man 3 sscanf
gnu c 实现了 C 标准的 format specify 的 %n,它的含义是返回从该次 XXscanf 调用开始到此读了多少个字节,我们可以利用这一点,来实现不需要内存分配的%s: 继续阅读
scanf 系列中有个函数 sscanf,可能有人用过,它的普通用法,我就不讲了,可以参考这里:man 3 sscanf
gnu c 实现了 C 标准的 format specify 的 %n,它的含义是返回从该次 XXscanf 调用开始到此读了多少个字节,我们可以利用这一点,来实现不需要内存分配的%s: 继续阅读
2007 年我写过一篇关于平行数组与CPU缓存文章,最近,我在 hash_strmap 和 gold_hash_map 中应用了这种设计思想,有这么几个字段可以使用平行数组: 继续阅读
这个列表由我写的一个 perl 程序抓取 time_hash_map 的结果生成。time_hash_map 是 google 自己实现的 hash table 中的一个性能测试程序,我在其中加入了针对 gold_hash_map 的测试,没有其它任何改动。实现原理:缓存与平行数组在…… 继续阅读
QPS 达到了35,644,397,测试机器就是普通 PC:CPU 3G Hz,内存 2G。
总计500,000 条数据,keylen=32 byte,迭代20次, 总查询次数 10,000,000 次, 耗时 0.280549 秒 继续阅读
前一段时间写了个 hash_strmap, 效果不错,其中的一些设计思想可以扩展。于是,昨天到今天两天写了一个通用的 hash_map, 起了个名字叫gold_hash_map。 继续阅读
This is the testing result with google sparse hash’s bench mark (time_hash_map.cc in google sparse hash’s tar ball)
The only modify to time_hash_map.cc is added the test for gold_hash_map (see diff below) 继续阅读
stl 容器大都有 reverse_iterator, 用法跟 iterator 一样。然而,可能很少有人考虑过它的实现。
首先, reverse_iterator 大都由 std::reverse_iterator 包装 iterator 生成,如此,同样的遍历循环, 继续阅读
C++11 中的 type_traits, 改变了一些约定成俗的名字:
我们经常使用的 has_trivial_destructor, 变成了 is_trivially_destructible, 现在已有不少编译器实现了 has_trivial_destructor, (std, std::tr1). 继续阅读