[C语言]if/else 与 ?:的时间比较

好奇if/else 与 ?:是否有时间差异,于是就自己试验了一下。

#include <stdio.h>
#include <sys/timeb.h>
int main(void) {
	struct timeb s1, e1,s2,e2;
	int t1,t2;
	int year = 2000;
	int Tlist[2][20];

    for (int n = 0; n < 21; n++) {
		ftime(&s1);
		for (int i = 0; i < 100000; i++) {
			if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
				printf("leap");
			else
				printf("not leap");
		}
		ftime(&e1);
		t1 = (e1.time - s1.time) * 1000 + (e1.millitm - s1.millitm);
		Tlist[0][n] = t1;

		ftime(&s2);
		for (int j = 0; j < 100000; j++) {
			(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? printf("leap") : printf("not leap");
		}
		ftime(&e2);
		t2 = (e2.time - s2.time) * 1000 + (e2.millitm - s2.millitm);
		Tlist[1][n] = t2;
	}
	for (int m = 0; m < 21; m++) {
		printf("\n%d      %d\n", Tlist[0][m], Tlist[1][m]);
	}
	return 0;
}


运行结果:

#      if/else      ?  :

5648      2220
4138      2077
2195      2111
2116      2195
2200      2098
2161      2179
2165      2185
2292      2197
2213      2244
2173      2121
2134      2092
2111      2117
2183      2145
2128      2133
2138      2124
2104      2132
2169      2146
2144      2249
2275      2272
2274      2196
2220      2208

前面几次,不知道为什么,if/else 耗时明显比?:高,之后开始下降,变得和?:差不多。

于是调换了if/else 与 ?:模块的位置,再次运行:

#      if/else      ? :

6667      2045
2140      8382
2056      2130
2129      2091
2066      2121
2233      2121
2112      2091
2107      2175
2133      2208
2146      2158
2529      2139
2080      2059
2068      2053
2266      2065
2062      3022
2097      2065
2026      2894
2069      2000
2092      2127
2071      2069
2045      2033

这次不仅if/else,?:第二次的耗时也莫名的明显高于平均值。


忽略这些异常数据,可以认为if/else与?:的耗时是一样的。

至于为什么会有这样的异常数据,我还不清楚。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值