Recent Posts
-
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...
-
January 05, 2013
基数估计算法的相关资料
下载LOFTER我的照片书 |基数就是,给一个数组,计算不同的数字的个数就是基数。 下面这些算法当数组非常大的时候,用概率的办法用很小的空间和误差估计大概的基数是多少。 想下面这个文档说的,用1.5kb的空间估算十亿个数字的基数。 淘宝工程师文档提到的一个应用就是统计访问一个链接的独立ip的数目。为每个连接分配一个基数估计需要的空间,然后把不同的ip和cookie之类的通过哈希函数,映射为一个数值。最后就是转换成基数估计问题。得到的基数就是独立ip数目。 Adaptive ...
-
December 12, 2012
Gettimeofday 和 linux vdso
下载LOFTER我的照片书 | 看到微博里面说道gettimeofday的优化问题,如果程序需要调用?? ????gettimeofday 太频繁的话,都是设置定时器,比如一毫秒的,获取到时间保存下来作为cache提供,这样可以减少?? gettimeofday的数量。这个之前就了解了。 还提到 Linux vDSO 的,其实我之前也一直以为是个 系统调用的,但其实由于 Linux vDSO (Virtual Dynamically-lined Shared Objec...
-
November 27, 2012
Windows平台的zeromq在iocp出来之前还是不要用了 默认select性能很差
默认在Windows平台用的select ,性能很差!在事件循环里面调用select之前初始化fd_set的memcpy消耗额外的16%的cpu资源。之前用了zeromq做了个传输log的后端,发现 libzmq.dll 占用的cpu比较多,用性能工具分析发现,原来是select的问题。windows平台的zeromq在iocp出来之前还是不要用了,默认select性能很差 - widebright - widebright的个人空间可以看到这个地方的3个memcpy的占用非常的多。之前一...
-
November 15, 2012
实现日志系统的想法和和日志文件的写磁盘策略
领导叫改造一下现在的log部件,主要用于trace的时候记录调试记录的。 测试了一下,发现这个trace的日志还是很大的,现有的代码,喜欢每个函数进入退出都加trace记录状态。如果这些trace记录全部打开的话,测试了之前做的一愕功能模块,发现每秒可以产生 50万条trace语句,20M的 日志都有可能。 这还只是单进程的,如果多个同时运行还可能更大了。 优化了一下以前代码,应该可以大幅度的提高性能,但相比较trace 全关的时候,性能还是要差20%左右。这个日志怎么保存还是个问题...
-
November 13, 2012
C++ auto_bufer 和 高性能日志库pantheios
Pantheios 的网页说他的库比其他的 日志库要快很多,看这里的http://www.pantheios.org/related_material.html的解释,大概是说,log startment都是使用栈上的内存吧,只是在log被启用的时候,才有最多一个的日志参数的复制。其实就是使用 一个 suto_bufer的辅助类,在栈上留一段空间,比如2048字节。 然后那些 log信息字串都是放到这个 栈上。 只有参数太多,格式化出来的字符串太长的时候才有 suto_bufer 去堆里...
-
November 12, 2012
Linux动态链接库的加载 查找so文件相关的命令和配置
ldd 查看依赖的 动态链接库。objdump -p /path/to/program | grep NEEDEDman ld.so 解释 ld.so 是如何搜索 动态链接库的。 ldconfig 配置ld.so 的搜索路径配置,生成cache那些readelf -d 查看编译时指定的 DT_SONAME DT_RUNPATH 等的值。ld -soname 等链接选项。 一般修改 /etc/ld.so.conf 指定路径...
-
November 09, 2012
Linux编译动态链接库so避免运行时才发现函数未定义符号的错误undefined symbol的ld参数
ldd 查看 elf文件依赖的 so 动态链接库 可以 export LD_LIBRARY_PATH=/path 设置 so文件的路径,nm -u *.so 或者 nm |grep U 查看 那些在 动态链接库中的符号。 "U" The symbol is undefinedundefined的 symbol 这种就是表示 在其他 so动态链接库里面定义的。但是如果你的编译的 是so文件,如果符号不在外部任何so文件里面,默认的配置也不会提示错误。而是编译通...
-
October 19, 2012
一个打字练习小程序
一直以来我打字都比较慢啊。刚刚断网,弄个小程序,来练习一下数字键,特殊字符什么的。下次每天来练习几分钟。我就不信我敲键盘还要看键盘。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;names...