
算法
herm_lib
一南游戏
腾讯IEG
展开
-
kfifo 一读一写无锁缓冲区中的memory barrier
Linux kernel实现了一个kfifo,支持一读一写线程的无锁操作。具体代码见kernel/kfifo.c。在2.6稍高一点的版本里都会涉及到memory barrier。本文稍微解释一下memory barrier。先看一下简单的两行代码: 26 bool flag = true; 27 int tmp = 10;26,27在现代的多核处理器里原创 2011-08-20 10:15:35 · 1440 阅读 · 0 评论 -
一种O1性能的LRU算法
LRU是一种淘汰算法,淘汰那些最久没被访问过的节点,以提高cache命中率。网游后台cache server经常会用到。这里说一种O1算法。 先明确两个操作相关的对象1. DataKey: cache数据的key2. IndexNode: 链表节点,内部有数据的index list(单向链表) 保存DataKeys。hashtable(表)原创 2011-06-10 09:48:00 · 3877 阅读 · 0 评论 -
一种LFU淘汰算法
以前介绍过LRU高效的实现方式:一种O1性能的LRU算法 http://blog.youkuaiyun.com/herm_lib/article/details/6535698今天也介绍一下LFU的实现方法。LRU是最近最少使用算法,就是把最早才访问的数据淘汰掉。LFU是最近最不常用算法,就是某一段时间内被用到最少的淘汰掉。LFU时间周期 使用次数的时间长度,原创 2012-03-01 19:56:20 · 6875 阅读 · 2 评论 -
多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间 Options
多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间陈硕Blog.youkuaiyun.com/Solstice自从 Intel Pentium 加入 RDTSC 指令以来,这条指令是 micro-benchmarking 的利器,可以以极小的代价获得高精度的 CPU 时钟周期数(Time Stamp Counter),不少介绍优化的文章[1]和书籍用它来比较两段代码的快慢。甚转载 2012-03-19 11:07:11 · 1543 阅读 · 0 评论 -
内存碎片和memcached slab控制碎片方法
转自:http://blog.youkuaiyun.com/xuzhonghai/article/details/7285821内存碎片的产生: 内存分配有静态分配和动态分配两种 静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。 因此动态分配将不可避免转载 2012-02-23 10:04:11 · 1642 阅读 · 0 评论