[No0000B7]If else 与 三元表达式? : 效率对比
先看 if else 一段代码
using System; class Program
{
private static void Main()
{
int i = ; if (i == ) i = -;
else i = -; Console.WriteLine(i);
}
}
输出 -1

用IL DASM ("C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe"vs2015 up3,项目框架.NET Framework 4.5.2)打开
.method private hidebysig static void Main() cil managed
{
.entrypoint
// 代码大小 26 (0x1a)
.maxstack
.locals init ([] int32 i,
[] bool V_1)
IL_0000: nop
IL_0001: ldc.i4.
IL_0002: stloc.
IL_0003: ldloc.
IL_0004: ldc.i4.
IL_0005: ceq
IL_0007: stloc.
IL_0008: ldloc.
IL_0009: brfalse.s IL_000f
IL_000b: ldc.i4.m1
IL_000c: stloc.
IL_000d: br.s IL_0012
IL_000f: ldc.i4.s -
IL_0011: stloc.
IL_0012: ldloc.
IL_0013: call void [mscorlib]System.Console::WriteLine(int32)
IL_0018: nop
IL_0019: ret
} // end of method Program::Main
在看三元表达式? :一段代码
using System;
class Program
{
private static void Main()
{
int i = ; i = i == ? - : -; Console.WriteLine(i);
}
}
输出 -1

.method private hidebysig static void Main() cil managed
{
.entrypoint
// 代码大小 20 (0x14)
.maxstack
.locals init ([] int32 i)
IL_0000: nop
IL_0001: ldc.i4.
IL_0002: stloc.
IL_0003: ldloc.
IL_0004: brfalse.s IL_000a
IL_0006: ldc.i4.s -
IL_0008: br.s IL_000b
IL_000a: ldc.i4.m1
IL_000b: stloc.
IL_000c: ldloc.
IL_000d: call void [mscorlib]System.Console::WriteLine(int32)
IL_0012: nop
IL_0013: ret
} // end of method Program::Main

明显,执行效率不一样。三元表达式? :执行效率更高。
using System;
using System.Diagnostics; class Program
{
private static void Main()
{
int i = ; Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int j = ; j < ; j++)
{
if (i == ) i = -;
else i = -;
}
stopwatch.Stop(); Console.WriteLine(stopwatch.ElapsedMilliseconds); stopwatch.Reset(); stopwatch.Start();
for (int j = ; j < ; j++)
{
i = i == ? - : -;
}
stopwatch.Stop(); Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
}

[No0000B7]If else 与 三元表达式? : 效率对比的更多相关文章
- python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数
一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- python之三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
一 三元表达式.列表推导式.生成器表达式 一 三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(r ...
- python之旅:三元表达式、列表推导式、生成器表达式、函数递归、匿名函数、内置函数
三元表达式 #以下是比较大小,并返回值 def max2(x,y): if x > y: return x else: return y res=max2(10,11) print(res) # ...
- python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04
递归 递归: # 函数在调用阶段直接或间接地又调用了自身 应用场景: # 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点) --> l = [1, [2, [3, [4, [5, ...
- Day4 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式、序列化与反序列化
一.装饰器 一.装饰器的知识储备 1.可变长参数 :*args和**kwargs def index(name,age): print(name,age) def wrapper(*args,**k ...
- 十七、python沉淀之路--三元表达式、列表解析
一.三元表达式 a = '骑车' res = '好天气' if a == '骑车' else '睡觉' print(res) 睡觉 解析:res = '好天气' if a == '骑车' ...
- Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录
上节课复习:1.函数的对象 函数可以被当作数据取处理2.函数嵌套 嵌套调用:在调用一个函数时,函数体代码又调用了其他函数 嵌套定义:在一个函数内部又定义了另一个函数 def foo( ...
- 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式
一.装饰器 一.装饰器的知识储备 不想修改函数的调用方式,但是还想在原来的函数前后添加功能 1.可变长参数 :*args和**kwargs def index(name,age): print(na ...
随机推荐
- 二分查找javascript
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- elasticSearch indices VS type
elasticSearch 的中文文档 http://es.xiaoleilu.com/010_Intro/05_What_is_it.html https://www.elastic.co/blog ...
- iOS透明引导页
一.效果展示 这里写图片描述 这种类型的新手引导比较常见,用于告诉用户某个按钮的作用,或者提醒用户可以进行某种交互操作.引导样式是在界面上加了一个半透明的引导图,高亮部分就是要突出的区域 二.怎么做? ...
- 【转】国外程序员收集整理的PHP资源大全
ziadoz在 Github发起维护的一个PHP资源列表,内容包括:库.框架.模板.安全.代码分析.日志.第三方库.配置工具.Web 工具.书籍.电子书.经典博文等等.伯乐在线对该资源列表进行了翻译, ...
- make执行过程
转载自 陈皓<跟我一起写 Makefile> 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的.但也有时你也许只想让m ...
- onethink的熟悉
2014.07.14 下载后,并安装成功! 发现一个安装的问题.安装时,无法直接成功. 修改Url 直接跳到最后一步,实现了安装.去官网查询,发现是程序的问题. 尝试构建企业官网. 首先 实现一个企业 ...
- C#常用网址
C# 编程指南 https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx
- Web前端开发中的各种CSS规范
Reference: http://yusi123.com/2866.html 一.文件规范 1.文件均归档至约定的目录中(具体要求以豆瓣的CSS规范为例进行讲解): 所有的CSS分为两大类:通用类和 ...
- 【腾讯优测干货分享】微信小程序之自动化亲密接触
本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/HcPakz5CV1SHnu-U8n85pw 导语 山雨欲来风满楼,最 ...
- Mysql 创建数据库后修改属性
添加表字段 alter table table1 add transactor varchar(10) not Null; alter table table1 add id int unsign ...