如何衡量我的代码质量?
发布时间:2020-12-16 03:26:13 所属栏目:百科 来源:网络整理
导读:我有一些编码经验,但令我烦恼的最大问题之一是如何改进我的代码. 我每次都检查代码的复杂性,可读性和正确性,但我的问题是我如何测量特定命令的大小和时间. 例如: 当我有下一个问题: A是整数 B是整数 C是整数 if – A越大,B指定C = A. 否则 – C = B. 对于
我有一些编码经验,但令我烦恼的最大问题之一是如何改进我的代码.
我每次都检查代码的复杂性,可读性和正确性,但我的问题是我如何测量特定命令的大小和时间. 例如: 当我有下一个问题: A是整数 B是整数 C是整数 if – A越大,B指定C = A. 否则 – C = B. 对于这个问题,我们有2个简单的解决方案 – 1.使用if-else语句 2.使用三元运算符 为了在编译之前干燥检查文件的大小,我得到的是第二个解决方案文件少于第一个半部分(对于1000000个操作,我得到一些MB的差异). 我的问题是我如何测量一些代码之间的时间差,这些代码执行相同的操作但是使用不同的命令,以及编译器对命令进行优化的程度与示例中的2相近. 解决方法
分析两种算法的时间复杂度.如果他们看起来很有竞
基准. 为您的问题提供足够大的输入,以便时间不受其他-OS-开销的影响. 开发两个解决相同问题的程序,但采用不同的方法. 我有一些方法在Time measurements到时间代码.例: #include <sys/time.h> #include <time.h> typedef struct timeval wallclock_t; void wallclock_mark(wallclock_t *const tptr) { gettimeofday(tptr,NULL); } double wallclock_since(wallclock_t *const tptr) { struct timeval now; gettimeofday(&now,NULL); return difftime(now.tv_sec,tptr->tv_sec) + ((double)now.tv_usec - (double)tptr->tv_usec) / 1000000.0; } int main(void) { wallclock_t t; double s; wallclock_mark(&t); /* * Solve the problem with Algorithm 1 */ s = wallclock_since(&t); printf("That took %.9f seconds wall clock time.n",s); return 0; } 您将获得时间测量.然后,您可以使用“算法2”解决问题,并比较这些测量值. PS:或者您可以检查每种方法的汇编代码,以获得更低级别的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |