前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >stl学习之测试stlen,cout等的运行速度

stl学习之测试stlen,cout等的运行速度

作者头像
十四君
发布2019-11-29 14:42:05
4880
发布2019-11-29 14:42:05
举报
文章被收录于专栏:UrlteamUrlteam

早以听闻说是c++的运行速度比c是慢了不少,所以写了个小程序来测试下,到底有多慢。

代码语言:javascript
复制
 1 #include<stdio.h>
 2 #include<time.h>
 3 #include<string.h>
 4 int main()
 5 {   clock_t  a=clock();
 6     int i,j,k;
 7     char c[10000]={"assdasdxzczasdxzczzsdaaaasdxzczzsdaaazsdaaaaaaaaaaaaaasdasfsdxzczzsdaaaaaaaaaaaaaasdasfzvfasdqweasfassdxzczzsdaaaaaaaaaaaaaasdasfzvfasdqweasfassdxzczzsdaaaaaaaaaaaaaasdasfzvfasdqweasfaszvfasdqweasfasf"};
 8     int l = strlen(c);
 9     
10     for(i = 0 ; i < strlen(c); i++)
11         for(j = 0 ; j < strlen(c); j++)
12             for(k = 0 ; k < strlen(c); k++)
13                  ;
14 
15     clock_t  b=clock();
16 
17     printf("%lf,%d",(double)(b-a)/CLK_TCK,l);
18 }

调用了time。h里面的clock_t类,使用clock函数获取两次的系统始终,因为获取的是震荡次数所以还需要除以clk-tck来计算出按秒的时间。最后就是对比两个函数的消耗时间了,为了让效果明显点,据使用200长度的字符数组,然后是三重循环,这样执行,strlen()函数的次数为200的3次方。八百万次

运行几次的时间大概都是1s上下,然后把程序中的strlen替换为固定的变量l那么就会单独只运行八百万次,

可以对比出大概的时间是很慢的,大概慢了4~5倍。

然后我又想测试下c++中的cin和cout是对比c中的scanf和printf对比下有多慢。

代码语言:javascript
复制
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstring>
using namespace std;
int main()
{   clock_t  a=clock();
    int i,j,k;
    int l = 100;
 
    for(i = 0 ; i < l; i++)
        for(j = 0 ; j < l; j++)
 
                 cout<<"a";
;;
    clock_t  b=clock();
 
    for(i = 0 ; i < l; i++)
         for(j = 0 ; j < l; j++)
 
                 printf("a");
 ;;
    clock_t  c=clock();
 
    printf("\n\n%lf\n%lf",(double)(b-a)/CLK_TCK,(double)(c-b)/CLK_TCK);
}

执行一万次的情况下,结果是

可以说确实是稍微慢了些,但是这里也有意外的问题,就是如果使用这个函数导致运行的速度变慢,那么如果我运行的次数和时间会成一定的比例,那么如果我把运行次数变为更大些呢?

我扩大了十倍之后的结果就是

并没有完全按全比例变大。

这里的问题就可能和cpu在运算的时候可能会把常用的放在内部直接的寄存器中这样来减少读取次数和运行速度的方法,无论如何今天可以算是能够计算出两种方法的时间上的优劣了。。

原创文章,转载请注明: 转载自URl-team

本文链接地址: stl学习之测试stlen,cout等的运行速度

No related posts.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-012,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档