Recent Posts
-
April 24, 2013
Visual studio 2008 调试时中断下来后生成dump文件的办法
程序crash之后,现在i配置默认启动 visutal studio 2008 visual studio 2010的调试器。并不直接生成dump文件或者error report。这个应该是注册表里面的调试器设置相关的一个设置,之前也写文章了。其实在visual studio里面选择 菜单 “Debug” 最后一项-> “Save Dump As”那里就可以生成dump文件,里没有 “mini dump ” “mini dump with heap” 两种类型可以选择。保存就...
-
April 17, 2013
Cc 的#line 宏(#line directive),修改编译报错时提示的源文件名字和行数
使用bison的时候,发现很多有意思,使用gcc编译 c++的源文件的时候,提示的错误还是i显示的位置在 *.y 文件里面的。觉得很有意思的一个功能。查看了一下代码,bison是在生成的代码里面插入了多 #line 来实现的。gcc的文档 “6 Line Control ”http://gcc.gnu.org/onlinedocs/cpp/Line-Control.html这里有详细的说明。#line linenum#line linenum filename#line anythin...
-
April 16, 2013
Flex和bison的用于加载和解析配置文件(参考freediameter用法)
freeDiameter的主配置文件还有那些extension的配置文件,都是用flex 和bison来做解析的。 估计那个作者很熟悉flex和bison吧,当然通过flex 和bision也可以做到很复杂的规则吧。不过有杀鸡用牛刀的感觉。 下面参考freeDiameter的extension里面的用法,写个简单的测试程序,实现字符串还有整数的解析。还有数组的元素的解析。也是熟悉一下flex和 bison的写法吧,很早之前,看thrift的代码的时候,就想试试这两个东西了。Lex...
-
March 31, 2013
Memcached的hash table 和string hashtable和trie数据结构性能优化相关的几篇论文
下载LOFTER我的照片书 |昨天看到微博里面@jametong转的这篇论文“MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing” Bin Fan, David G. Andersen, Michael Kaminsky Carnegie Mellon University, Intel Labs这里面说使用了Optimistic Concurrent Cuckoo Has...
-
March 20, 2013
优化程序的cpu cache效率相关知识what every programmer should know about memory
很早之前就看这个系列的文档了 “What every programmer should know about memory” 应该是redhat的一个工程师写的。不过英文的版的,篇幅很长,不怎么认真看过。今天看到开源中国上面有人有翻译成中文版了每个程序员都应该了解的 CPU 高速缓存http://www.oschina.net/translate/what-every-programmer-should-know-about-cpu-cache-part2翻译的很不错!!!原文是在LWN...
-
March 07, 2013
c++ 管理一个排好序的vector sorted_vector ordered Vector boost flat_[multi]map set
打算试用一个排好序的vector来做另外一个 “字符串+ value” 的vector的索引, 其实就是字符串作为key,可以通过fnv32 的hash函数计算key,用于key的比较和索引。之所以用排好序的vector而不是map,是出于考虑。我觉得vector内存连续比map那种好,可以对排序的vector 做二分查找,跟map的l查找的时间复杂度是一样的(文档说排序的vector查找要比map快一倍。) 应用中的插入和删除操作很少,这样即使排序的vector的插入和删除性能比map...
-
February 22, 2013
Gcc 和vc中使用 嵌入汇编实现memcpy的例子
//- --------------------linux 内核里面的memcpy汇编----------------static __always_inline void *__memcpy(void *to, const void *from, size_t n){ int d0, d1, d2; asm volatile("rep ; movsl\n\t" "movl %4,%%ecx\n\t" ...
-
February 16, 2013
微博看到一篇比较不错的google工程师优化字符串操作的文章
Automated Locality Optimization Based on theReuse Distance of String Operationshttp://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/pubs/archive/40679.pdfAbstract—String operations such as memcpy, memset an...
-
January 31, 2013
Windbg和ollydbg都可以设置无数个内存访问断点
微博看到有人说c++ 内存被破坏,导致指针数组里面的某个指针值不错。感觉可以通过设置内存访问断点来查找问题。不过说这个指针比较多,不能用这种办法。试试vc2008里面的 数据断点,确实有个数限制,我的电脑只能设置4个,每个4个字节长度的断点。 再多就提示超过硬件限制了。应该是x86里面4个调试寄存器,不能再多了。 (这个寄存器x86 debug register 有DR0…DR7 8个,但好像这有4个能用 http://en.wikipedia.org/wiki/X86_debug_...
-
January 25, 2013
Read write memory barriers起的作用
http://en.wikipedia.org/wiki/MESI_protocolMemory BarriersMESI in its naive, straightforward implementaton exhibits two particular low-performance behaviours; firstly, when writing to an invalid cache line, there is a long delay while the line is f...