2014 九月 | 重归混沌的BLOG

代码模块化(一)

今天重新review了一遍代码, 发现模块竟然有几十个之多, 之间引用大概如下: MODULE_MAIN -> MODULE_A MODULE_B MODULE_C … MODULE_A -> MODULE_B MODULE_C MODULE_SUB_A1 MODULE_SUB_A2 … MODULE_B -> MODULE_SUB_B1 MODULE_SUB_B2 … MODULE_C -> MODULE_SUB_C1 MODULE_SUB_C2 … … 也就是说这些模块之间其实并非是同级的, 有些模块只是被某一个上层模块调用罢了. 但是我目前代码里面其实并不能很明显的看到这种引用关系, 如果这种模块多了, 相互间的引……

cache命中率对效率的影响

趁着去买菜的空档, 突然间想起来cache命中率失败的代价从来还没测过, 随后又想到网上很多人争论如果两个for循环嵌套, 到底是大循环放在外面效率高还是小循环放在外面效率高. 虽然有大牛说不同情况不同分析, 但到底为什么却没有分析. 于是就for循环与cache命中率写了一段测试代码访问1G的数据来测了一下性能, 竟然有1倍之多. 代码如下: #include <Windows.h> #include "assist.h" //cache line 64 byte //cache size 4Mbyte typedef unsigned char cache_line_t[64]; cache_li……

无锁编程

好久没写blog, 最近都在研究无锁算法, 一直在纠结为什么无锁高效, 无锁是否是真的无锁. 看了coolshell的无锁队列后, 曾经专门做过锁的性能测试. 自以为发现了无锁的高效之处. 可是真到我的无锁队列写出之后, 突然间感觉之前的测试太片面了, 无锁对于效率的提升也许并没有我想象的那么高, 也许并非无锁 当然其效率提升其实已经很显著了在某些条件下. 再回过头看重新看了一下coolshell中对的无锁队列下面的那行总结”如果不用专门的车锁, 那么就得自己锁自己”, 突然间发现……