[C语言]if/else 与 ?:的时间比较
来源:互联网 发布:2016安全软件排名 编辑:程序博客网 时间:2024/05/16 19:12
好奇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");elseprintf("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与?:的耗时是一样的。
至于为什么会有这样的异常数据,我还不清楚。。。
- [C语言]if/else 与 ?:的时间比较
- c语言if-else的效率比较
- 【C语言】if else
- C语言:IF-ELSE的配对问题
- c语言中 switch case 和 if else执行效率的比较
- C语言比较两个数的大小使用if-else语句和条件运算符
- C语言if else语句
- c语言if else语句
- C语言条件运算符与if-else语句
- 三元运算符与if...else...的比较
- Java三元运算符与if...else...的比较
- 三目运算 与 if(){}else{}的效率比较
- C语言基础 if,else if,else优秀格式
- C语言中switch case语句的实现(switch case 和 else if 的比较、区别)
- if...else if与if的区别
- C语言基础- #if, #elif, #else, #endif 等的使用
- WindowsBatch与LinuxShell比较[IF/ELSE]
- C标签的if else
- 文件位置指针操作fewind和ftell
- 2017.10.22 方格染色 失败总结
- c++多线程
- Python学习之路---Python迭代器与生成器
- MapReduce和Yarn的架构设计
- [C语言]if/else 与 ?:的时间比较
- 【JavaDemo】使用key遍历含自定义类的Map集合
- RabbitMQ 小结
- hadoop搭建之网络配置
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- 十进制转化为二进制
- 强化学习的基础知识
- MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value
- 学生信息管理系统之第二篇主要功能模块设计和数据库设计