全部博文(436)
分类: C/C++
2010-11-10 20:53:53
11月8日总结
在这10天中,我们对于代码的测试工具进行了一些查找。
java中可以使用的由马里兰大学Bill Pugh教授开发的FindBugs软件,它是一个开源的静态代码分析工具,目的是找出Java代码中的常见缺陷,并且基于LGPL开源协议,无需运行就能对代码进行分析。FindBugs的特点是主要着眼于寻找代码中的缺陷,直接操作类文件(class文件)而不是源代码。FindBugs还可以通过命令行、各种构建工具(如Ant、Maven等)、独立的Swing GUI或是以Eclipse和NetBeans IDE插件的方式来运行。并且FindBugs输出结果既可以是XML的,也可以是文本形式的。另外开发者可以通过多种方式来使用FindBugs,最常见的是在新编写模块的代码分析以及对现有代码进行更大范围的分析。
在C语言中,我们可以通过一些时间函数来测试运行代码所需的时间,其中包括
1. clock
clock是ANSI C的标准库函数
2. times
times的用法基本和clock类似,同样是取得CPU时间片的数量,所不同的是要除以的时间单位值为sysconf(_SC_CLK_TCK)。
3. gettimeofday
用gettimeofday直接提取硬件时钟进行运算,得到的结果的精度相比前两种方法提高了很多。
4. getrusage
getrusage得到的是程序对系统资源的占用信息。
但是在许多论文中,我们并没有看到作者是如何使用工具进行测试的,最常见的只是将C代码反汇编,通过对其汇编代码的分析,得出该段程序是否效率。
通过近一段时间的工作,我们看到对于题目中的“低功耗”,我们得到的资料相对较多,而“高可靠”部分我们收集的资料还比较少,像是如下程序:
Char *DoSomething(…)
{
Char *p,*q;
If((p=malloc(1024))==null) return null;
If((q=malloc(2048))==null) return null;
…
Return p;
}
如果q没有申请到,应先释放p,再返回null。
11月8日计划
在未来几周中,我们将同时开展对于“低功耗”的总结工作与“高可靠”的收集工作。争取对于“低功耗”部分,能尽快得出一份较为全面的文档。同时加强对“高可靠”部分的探索。如果探索顺利,我们将加入实验部分,印证我们得出的结论。