C语言速度优化之指针赋值与if推断

近期在写的一个项目须要优化处理速度,我写了一下程序来測试指针赋值与指针推断的速度比較。结果让我大吃一惊。文章来源地址https://www.yii666.com/article/754116.html文章地址https://www.yii666.com/article/754116.html文章来源地址:https://www.yii666.com/article/754116.html

#include <stdio.h>
#include <stdlib.h>
#include <time.h> int main(int argc, char *argv[]) {
int j;
int * tmp;
clock_t start = clock();
int i=0;
tmp=malloc(sizeof(int *));
for(;i<100000000;i++){
tmp[0]=2324;
tmp[1]=32423;
tmp[2]=90123;
tmp[3]=23421;
}
clock_t end = clock();
printf("程序执行时间为: %ld ms \n",end - start);
start = clock();
i=0;
for(;i<100000000;i++){
if(tmp[0]==2356){
j=9089;
}
if(tmp[1]==234){
j=7812;
}
if(tmp[2]==2342){
j=2345;
}
if(tmp[3]==23423){
j=12032;
}
}
end = clock();
printf("程序执行时间为: %ld ms",end - start);
return 0;
}

结果例如以下:

程序执行时间为: 296 ms
程序执行时间为: 344 ms

我又执行了数次,结果都是前一段程序比后一段程序块40~50ms左右。网址:yii666.com

推測可能是由于我在for循环中一直赋相同的值。编译器做了相关优化。但是假设那样的,不可能仅仅快40~50ms。

第一小部分的程序主体是:

 for(;i<100000000;i++){
tmp[0]=2324;
tmp[1]=32423;
tmp[2]=90123;
tmp[3]=23421;
}

第一小部分的程序主体是:

    for(;i<100000000;i++){
if(tmp[0]==2356){
j=9089;
}
if(tmp[1]==234){
j=7812;
}
if(tmp[2]==2342){
j=2345;
}
if(tmp[3]==23423){
j=12032;
}
}

測试环境是 :Dev C++

相同的。每次都訪问了指针指向的地址。结果赋值居然比推断快。网址:yii666.com<

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

C语言速度优化之指针赋值与if推断-相关文章

  1. C语言之指针用法总结

  2. C语言 结构体指针赋值 incompatible types when assigning to type 'char[20]' from type 'char *'

  3. 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用

  4. (四)C语言柔性数组、指针赋值

  5. C语言速度优化之指针赋值与if推断

  6. 由链表初始化看C语言的二级指针

  7. c语言之函数指针

    一、基础研究这里研究的内容是函数指针,需要我们在研究后构造程序来描述函数指针数组的用法和向函数传函数指针的方法。指针有很多种:整型指针、结构体指针、数组指针等等,它们的本质是它们的值都是一个地址,只不过整形指针的值是一个int型数据的地址,结构体

  8. C语言中结构体赋值问题的讨论(转载)

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题。那么就总结一下C语言中结构体赋值的问题吧:结构体直接赋值的实现下面是

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png