微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何衡量我的代码质量?

我有一些编码经验,但令我烦恼的最大问题之一是如何改进我的代码.

我每次都检查代码的复杂性,可读性和正确性,但我的问题是我如何测量特定命令的大小和时间.

例如:

我有一个问题:

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

原文地址:https://www.jb51.cc/c/111418.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐