加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何衡量我的代码质量?

发布时间: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:或者您可以检查每种方法的汇编代码,以获得更低级别的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读