Tag Archives: 程序设计

高性能程序设计经验总结

最近读了一些书(CSAPP & CLRS),也分析和编写了一些基础算法,有必要归纳从中获取的经验,以备后用。

优化方案

我把优化范围三个领域,如下:

1、问题领域

指的是在设计阶段建立问题模型时,所使用的优化方案

  1. 选择好适当的算法和数据结构,避免使用时间复杂度高的算法或最坏情[……]

    继续阅读

Posted in 程序设计, 软件工程 | Tagged , | 20 Comments

从qsort的局限性闲话gcc对“闭包”运算的支持以及DEP/NX的影响

一、问题的产生:

前几周/月?在CU论坛闲逛时看到OWO同学出了一道C语言题,由于年代久远细节记不得了,以下是自己对关键问题在记忆中改造后的描述:

//有一个enum表示科目,以0开头,以TYPE_END结尾,其余默认
enum subject_type{CHINESE=0, MATH[......]

继续阅读

Posted in C/C++, 程序设计 | Tagged , | 21 Comments

WebBenchPro(一个快速易用的Web性能测试器)版本0.1发布

背景:

最近在做一些web相关工作,就发现了webbench这个性能测试工具,非常简单易用。但是在用的过程中也是不尽如人意,于是萌生了改进的念头。

webbench是基于GPL授权协议的,我自然可以取得源码修改,然后作为webbench_pro这个项目发布。

简介:

WebBenchPro 是由[……]

继续阅读

Posted in Linux, 程序设计 | Tagged , | 5 Comments

关于并行计算发展的一些思考

本文是在CU论坛上回答网友的问题《C语言标准有没有规定前一个语句必须在后一个语句之前完成?》而引发的关于并行处理的一些见解和思考,以下正文

难得OwnWaterloo老兄想起了在下,以及最近我也看到了一些并行方面的帖,就浮上水面说说自己的见解吧。
C语言是典型的Von Neumann体系下的编译性语言:”存储程序并顺序执行”。
70年代初的时候C语言发明和Unix的产生是息息相关的,必须要在一起说明的。当是计算机并行运算并不是很普遍,绝大多数的并行是靠多进程完全任务的,线程还没有被广泛提及,CPU也没有乱序执行的概念。这时候进程间的并行就靠操作系统去隔离,这一点当是的Unix做的非常不错,并由于涉及到Unix设计哲学(简单即美)复杂而高效的多线程在Unix类系统上一直没有得到重视,这也是影响了C语言的产生和发展。C语言设计者也认为C语言应该足够小巧灵活(C语言以控制和处理内部(存)数据为优先任务,个人见解),不要引入太多平台差异的东西,于是I/O功能和后来突飞猛进的并行计算自然只能丢到库中或者干脆完全隔离不予考虑。
[……]

继续阅读

Posted in 操作系统, 程序设计 | Tagged , | 4 Comments

《狂人C》读評(一) 理解程序设计篇

KBTiller兄在书籍扉页写指正,不敢指正,共同讨论。其实第一篇在年前已看完,由于过节心态浮躁一直没能总结记录。仔细想想自己真是拖拉的要命,再不写点东西对不起KBTiller兄的热情心意。本文大部分内容属于跟作者观点不一致的描述,我不是初学者,所以与其是读书笔记,不如说挑刺,尽管这样,书中还是有不[……]

继续阅读

Posted in 程序设计 | Tagged | 51 Comments

循环不变式的思想及其应用

  循环不变式的思想及其应用

  循环不变式(loop invariants)不只是一种计算机科学的思想,准确地说是一种数学思想。在数学上阐述了通过循环(迭代、递归)去计算一个累计的目标值的正确性,属于基础数学的范畴,而且在计算机上也应用广泛。初次见到这个词是在《算法导论》,在第二章描述了这个思想[……]

继续阅读

Posted in 程序设计 | Tagged | 3 Comments

C语言中左值概念的一些汇总

1、左值是一个表达式,可以读取或者修改它所引用的对象。对象是一块内存区域,可以读取或者修改它的值。

2、左值也可以是只读。

3、能放到等号左边(对其赋值)的一定是左值,但并不是所有的左值都可以放到等号左边(对其赋值)。

4、左值可以是不完整类型但不能是void类型

5、除了字符串字面常量外,其他任何[……]

继续阅读

Posted in 程序设计 | Tagged | 10 Comments

gsoap使用点滴

  今天不记录无聊的生活,记录技术问题,技术也是生活的一部分。gsoap探索中的点滴。

  内存管理部分:
  1、gsoap所有out出去的数据必须自己分配空间,写入数据;而in进来的数据由gsoap自动完成,我们所需的只是把in函数的返回的数据指针保存到相应位置。
  2、gsoap每次在接[……]

继续阅读

Posted in 程序设计 | Tagged | 7 Comments