博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
stl学习之测试stlen,cout等的运行速度
阅读量:4687 次
发布时间:2019-06-09

本文共 1649 字,大约阅读时间需要 5 分钟。

 

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

1 #include
2 #include
3 #include
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对比下有多慢。

#include
#include
#include
#include
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在运算的时候可能会把常用的放在内部直接的寄存器中这样来减少读取次数和运行速度的方法,无论如何今天可以算是能够计算出两种方法的时间上的优劣了。。

转载于:https://www.cnblogs.com/luyi14/p/4218443.html

你可能感兴趣的文章
2017~回顾分享
查看>>
let const var的区别与作用
查看>>
计算出线在屏幕内的最长坐标
查看>>
使用svn——项目的目录布局
查看>>
Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理
查看>>
【bzoj4310/hdu5030-跳蚤】后缀数组
查看>>
深度信任网络的快速学习算法(Hinton的论文)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
s的封装和信息隐蔽
查看>>
excelhttp://www.cnblogs.com/caoyuanzhanlang/p/3591904.html
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>
不把DB放进容器的理由
查看>>
OnePage收集
查看>>
Java parseInt()方法
查看>>
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>