2011-06-17

今天继续在看BSD db1.8的代码。mpool_get(3),文档中说"The flags argument is not cur- rently used.“ 实际上这个参数是有效的,只有一个标志位:MPOOL_IGNOREPIN。而这个标志位只给内部代码用。mpool的hash table是静态hash,这个我觉得十分应当改进。HASHSIZE=128,也就是说槽就128个,多了就溢出到链表上。128*4=512K,在现代OS上,这么小的cache…… 或者,既然max cache在mpool_open的时候已经给出来了,那么hash table所存储的对象的最大个数也可知道了啊,用它来设置bucket数组的大小都比用128好。谁去把代码稍微修修吧,最好直接做成动态hash,再开放一个动态调整cache size的接口。

想做单元测试。gtest、cppunit、qt test,哪个好?我现在比较倾向于gtest,像google的其它东西一样,简洁小巧且功能强大。

我发现网上讲jni的文章很少,好不容易找到本书是12年前的。jni和C++配合起来简直就是噩梦。比如,如何把C++的pointer存在一个java的object中?网上给的方法基本都是强转成long。貌似大家都默认,sizeof(long)==sizeof(void*)。的确,大部分编译器都是如此,但是在指针和整数之间搞这种转换,真是很讨厌的代码。再者,二者的异常机制要粘合起来,更是恶心。每个java native method的实现需要用try…catch…包装起来,把所有C++的异常转成JAVA的。而C++中每次调完一个JAVA的函数,都得赶紧check一把看刚才有没有exception。这些,这些转来转去的代码,很容易就把原本的代码的逻辑给淹没了。一眼望去全是exception处理。

睡觉。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥