对于大批量赋值功能,使用if判断是否能提高性能
场景:
如果对某变量进行赋值,是否需要判断一下,如果相等就不用赋值,这样会不会提高性能。
代码如下:
string a = "";
string b = ""; long x1=, x2=, x3=; Stopwatch w = new Stopwatch(); for (int x = ; x < ; x++)
{
w.Reset();
w.Start();
for (int i = ; i < ; i++)
{
a = b;
}
w.Stop();
x1 += w.ElapsedMilliseconds; w.Reset();
w.Start();
for (int i = ; i < ; i++)
{
if(a != b)
a = b;
}
w.Stop();
x2 += w.ElapsedMilliseconds; w.Start();
for (int i = ; i < ; i++)
{
if (!a.Equals(b))
a = b;
}
w.Stop();
x3 += w.ElapsedMilliseconds;
} System.Diagnostics.Debug.WriteLine(String.Format("直接赋值耗时:{0}ms", x1));
System.Diagnostics.Debug.WriteLine(String.Format("判断赋值耗时:{0}ms", x2));
System.Diagnostics.Debug.WriteLine(String.Format("判断赋值2耗时:{0}ms", x3));
运行结果:
直接赋值耗时:3294ms
判断赋值耗时:5955ms
判断赋值2耗时:18244ms
结论:
判断后严重影响性能,所以无需判断,直接赋值。
对于大批量赋值功能,使用if判断是否能提高性能的更多相关文章
- MySQL 笔记整理(7) --行锁功能:怎么减少行锁对性能的影响?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 7) --行锁功能:怎么减少行锁对性能的影响? MySQL的行锁是在引擎层由各个引擎自己实现的.因此,并不是所有的引擎都支持行锁,如 ...
- 2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比
原文:2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比 title author date CreateT ...
- Java基础知识强化72:正则表达式之判断功能(手机号码判断 和 校验邮箱)
1. 判断功能: 使用了String类的matches方法,如下: public boolean matches(String regex): 2. 判断手机号码的案例: package cn.it ...
- MyBatis参数为Integer型并赋值为0时判断失误的问题解决
mybatis.xml中有if判断条件判断参数不为空时,赋值为0的Integer参数被MyBatis判断为空,因此不执行<if test="param != null and para ...
- iOS 设备定位功能可用的判断
if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] ...
- 获取Win和Linux系统启动时间,类似uptime功能,用于判断是否修改过系统时间
目录 前言 测试代码 Win测试 Linux测试 总结 前言 有时候需要判断系统是否有修改过时间,最简单的方法就是获取当前时间A,然后sleep X秒,然后获取 时间B,如果 时间B - 时间A ≠ ...
- jquery ajax 赋值问题, 后面程序判断逻辑用
添加async:false; 像 $.get() 等是没有async参数的, 所以需要用到如下 $.ajaxSetup({ async : false //这个意思是等这个ajax有了返回值后才会执行 ...
- GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率
GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率 功能丰富的 Java 工具包.它帮助我们实现了常用的工具方法,从而减少代码的体积,提高开发效率.该项目最初是作者工作项目中的 ...
- ES 大批量写入提高性能的策略
1.用bulk批量写入 你如果要往es里面灌入数据的话,那么根据你的业务场景来,如果你的业务场景可以支持让你将一批数据聚合起来,一次性写入es,那么就尽量采用bulk的方式,每次批量写个几百条这样子. ...
随机推荐
- iOS的主要框架介绍
框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件.一个共享库定义的方法或函数可以被应用程序调用. IOS提供了很多你可以在应用程序里调用的框架.要使用一个框 ...
- 用unity4.3发布WINDOWS STORE APP应用的方法
http://www.cnblogs.com/suxsho/ 原创,转载请声明 ============================================================ ...
- python学习之关键字
1.assert 语句形式:assert 布尔表达式[,msg] 解释:assert是检验一个表达式是否为真.若不为真,则触发一个错误. 例如: assert False assert 1==2 as ...
- ubuntu绑定串口设备
原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 为了不让我们的usb设备在使用时,由于设备节点注册的ID不同,设备名称会不同,设备如何在 Linux 中永 ...
- LeetCode() Range Sum Query-mutable
http://www.java3z.com/cwbwebhome/article/article1/1369.html?id=4804 http://www.cnblogs.com/zichi/p/4 ...
- uva 12169
/* 巨大的斐波那契数列_________________________________________________________________________________ #inclu ...
- sublime Text 2 配置以及 Python环境搭建
在搭建Python环境前,先设置好Sublime Text 2的环境. 一.Sublime Text 2配置: 1.离线安装: Perferences-->Browser Packages -- ...
- 初识linux端c++程序开发
关于linux端程序开发,我以前一直不知道是做些什么,只是感觉听高端的.最近接触了一些,有了一些初步的认识. 首先,linux是一个操作系统,跟windows一样:接通电源.按下电脑开机,电脑就会自动 ...
- 注册noip.com动态域名的步骤
1.先打开这个网址 http://www.noip.com/ 2.点击页面右上绿色的Sing Up,进行注册 3.会出现这个页面,把这些填上 Create my hostname later这一项不打 ...
- Legacy Notes网络和服务端配置的笔记
在云服务器上使用LAMP全过程: 第一步:传文件 在windows上下载winscp,连接使用scp协议.注意:centos需要安装scp yum install openssh-clients 即可 ...