2016年10月18日

摘要: 一般比较规范的项目都有一个代码规范,Google C++ Style Guide(以下简称GCSG)是比较流行的C++代码规范,为什么我会分析它?因为我们现在就在用。 C++代码规范一般有两个方向,一个方向是很保守,基本把C++降级回c with classes的年代。我记得前几年我在某公司某项目中 阅读全文
posted @ 2016-10-18 19:42 chen3feng 阅读(4291) 评论(0) 推荐(1) 编辑

2015年1月27日

摘要: 终端下耗时较长的程序运行过程中输出中间状态时,有时信息太多,希望一些次要的信息能被覆盖掉,整体显得干净一些。以往我用"\r"字符,控制输出的光标回到行首,再次输出覆盖上一行的信息,只要输出不换行,且下次输出的行长度不短于上一次,看起啦就是最后一行不断地在刷新。但是如果下一次的输出长度不确定,甚至因接... 阅读全文
posted @ 2015-01-27 23:47 chen3feng 阅读(2323) 评论(0) 推荐(0) 编辑

2014年12月3日

摘要: 进程有id,可以通过getpid()获得,线程也有id,但是glibc没有提供封装。需要自己发出系统调用。在关键路径,系统调用还是对性能有影响的。因此我们可以想到类似glibc对getpid做的cache化封装,用thread local的方式缓存每个线程的id,每个线程只有第一次调用gettid时... 阅读全文
posted @ 2014-12-03 12:34 chen3feng 阅读(443) 评论(0) 推荐(0) 编辑

2014年11月19日

摘要: 我实现了一个server,支持HTTP协议和内部私有协议,为了简化部署,我设计成一个端口同时兼容两种协议的客户端。根据连接后到达的消息头自动识别客户端协议。这种事情的传统做法是,accept后加入epoll,当fd第一次可读时,读出一些并解析,判断协议类型。创建相应的上下文对象,开始服务。这样就引入... 阅读全文
posted @ 2014-11-19 21:46 chen3feng 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 昨天和同事奋战几个小时,解决了一个linger造成的bug。现象是这样的,这是一个我从原型接手,扩充了各种功能成为可用代码的epoll实现的非阻塞socket server程序,接收大量的短连接,测试发现性能有问题,用gperftools的cpu profiler也没看出问题。就在一些可疑调用的地方... 阅读全文
posted @ 2014-11-19 21:33 chen3feng 阅读(1075) 评论(0) 推荐(1) 编辑

2014年11月4日

摘要: 大部分人都至少接触过不止一种构建工具,比如make,autotools。而我们开发了Blade,为什么那么多现成的工具不用,而又再造了一个轮子,相对于传统的make等工具,Blade的好处在又哪里呢?你的项目是否适合用Blade来构建,以前的文档都是冷冰的介绍,今天本文将从作者和开发人员以及项目代码... 阅读全文
posted @ 2014-11-04 23:02 chen3feng 阅读(2599) 评论(0) 推荐(0) 编辑
摘要: Blade是我们开发的大规模C++项目构建工具。gperftools是google开发的性能工具,由高效内存分配器,CPU性能分析器,堆分析器,堆检查器等工具组成。和其他构建工具不同,结合gtest,Blade直接集成了对测试的支持,使得你可以像构建代码一样运行测试。为了进一步提高测试的效果,我们还... 阅读全文
posted @ 2014-11-04 22:22 chen3feng 阅读(2144) 评论(4) 推荐(2) 编辑

2014年9月23日

摘要: http://graphviz-dev.appspot.com/用来把dot语言的图画出来,很多地方用dot语言来画图,比如doxygen的类关系,gperftools的分析结果等。 阅读全文
posted @ 2014-09-23 18:43 chen3feng 阅读(950) 评论(0) 推荐(0) 编辑

2012年5月1日

摘要: 按照 C/C++ 标准,有符号数溢出的话,其行为是未定义的。但是常规的实现,处于性能考虑,并不检查这一点。不过 gcc 还是有个参数,可以检查有符号数溢出:-ftrapv This option generates traps for signed overflow on addition, subtraction, multiplication operations.#include <limits.h>int main(int argc, char** argv){ int n = INT_MAX - 1; n += argc; return n + 10 * argc;... 阅读全文
posted @ 2012-05-01 14:24 chen3feng 阅读(758) 评论(0) 推荐(0) 编辑

2012年4月18日

摘要: msn space 挂了之后,很久没有写了。 阅读全文
posted @ 2012-04-18 22:25 chen3feng 阅读(98) 评论(0) 推荐(0) 编辑

导航