高性能程序设计经验总结
最近读了一些书(CSAPP & CLRS),也分析和编写了一些基础算法,有必要归纳从中获取的经验,以备后用。
优化方案
我把优化范围三个领域,如下:
1、问题领域
指的是在设计阶段建立问题模型时,所使用的优化方案
- 选择好适当的算法和数据结构,避免使用时间复杂度高的算法或最坏情[……]
最近读了一些书(CSAPP & CLRS),也分析和编写了一些基础算法,有必要归纳从中获取的经验,以备后用。
我把优化范围三个领域,如下:
指的是在设计阶段建立问题模型时,所使用的优化方案
为了保证lua脚本返回结果的正确性,我写了一些用于检查脚本正确性的额外脚本,在开发环境下每个需要检查的函数里面调用额外脚本,在生产环境下注释掉这些调用。由于脚本数目比较多,手工增删实在够繁琐,于是想用一种更自动化的方法来完成这个任务。这算一个提高生产力的小需求吧。
虽说C++编译器[……]
最近工作上用到Lua脚本和C/C++程序交互操作,其中某个功能需要C程序异步通知Lua脚本工作状态,然后Lua脚本会在检测点检测到该状态并做相应处理。然后在测试时发现异常退出的bug,于是觉得有必要研究下此方面内容,故写此文。
由于Lua脚本调用的检测点函数也是C程序写的,所以相当于在[……]
在2011年底的时候忽然有了自己开设独立博客的想法。主要是因为CSDN的博客服务太难用了:广告多、不能匿名评论、不能嵌入flash和音乐、可定制性差。再加上我刚有这些想法的第三天CSDN就爆出了明文密码事件,所以就毅然决然了离开陪伴我6年的CSDN了。我们需要一个更自由更可控的世界。[……]
一、问题的产生:
前几周/月?在CU论坛闲逛时看到OWO同学出了一道C语言题,由于年代久远细节记不得了,以下是自己对关键问题在记忆中改造后的描述:
//有一个enum表示科目,以0开头,以TYPE_END结尾,其余默认 enum subject_type{CHINESE=0, MATH[......]
背景:
最近在做一些web相关工作,就发现了webbench这个性能测试工具,非常简单易用。但是在用的过程中也是不尽如人意,于是萌生了改进的念头。
webbench是基于GPL授权协议的,我自然可以取得源码修改,然后作为webbench_pro这个项目发布。
简介:
WebBenchPro 是由[……]
本文是在CU论坛上回答网友的问题《C语言标准有没有规定前一个语句必须在后一个语句之前完成?》而引发的关于并行处理的一些见解和思考,以下正文
难得OwnWaterloo老兄想起了在下,以及最近我也看到了一些并行方面的帖,就浮上水面说说自己的见解吧。
C语言是典型的Von Neumann体系下的编译性语言:”存储程序并顺序执行”。
70年代初的时候C语言发明和Unix的产生是息息相关的,必须要在一起说明的。当是计算机并行运算并不是很普遍,绝大多数的并行是靠多进程完全任务的,线程还没有被广泛提及,CPU也没有乱序执行的概念。这时候进程间的并行就靠操作系统去隔离,这一点当是的Unix做的非常不错,并由于涉及到Unix设计哲学(简单即美)复杂而高效的多线程在Unix类系统上一直没有得到重视,这也是影响了C语言的产生和发展。C语言设计者也认为C语言应该足够小巧灵活(C语言以控制和处理内部(存)数据为优先任务,个人见解),不要引入太多平台差异的东西,于是I/O功能和后来突飞猛进的并行计算自然只能丢到库中或者干脆完全隔离不予考虑。
[……]
KBTiller兄在书籍扉页写指正,不敢指正,共同讨论。其实第一篇在年前已看完,由于过节心态浮躁一直没能总结记录。仔细想想自己真是拖拉的要命,再不写点东西对不起KBTiller兄的热情心意。本文大部分内容属于跟作者观点不一致的描述,我不是初学者,所以与其是读书笔记,不如说挑刺,尽管这样,书中还是有不[……]
循环不变式的思想及其应用
循环不变式(loop invariants)不只是一种计算机科学的思想,准确地说是一种数学思想。在数学上阐述了通过循环(迭代、递归)去计算一个累计的目标值的正确性,属于基础数学的范畴,而且在计算机上也应用广泛。初次见到这个词是在《算法导论》,在第二章描述了这个思想[……]
1、左值是一个表达式,可以读取或者修改它所引用的对象。对象是一块内存区域,可以读取或者修改它的值。
2、左值也可以是只读。
3、能放到等号左边(对其赋值)的一定是左值,但并不是所有的左值都可以放到等号左边(对其赋值)。
4、左值可以是不完整类型但不能是void类型
5、除了字符串字面常量外,其他任何[……]