场景:

如果对某变量进行赋值,是否需要判断一下,如果相等就不用赋值,这样会不会提高性能。

代码如下:

             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判断是否能提高性能的更多相关文章

  1. MySQL 笔记整理(7) --行锁功能:怎么减少行锁对性能的影响?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 7) --行锁功能:怎么减少行锁对性能的影响? MySQL的行锁是在引擎层由各个引擎自己实现的.因此,并不是所有的引擎都支持行锁,如 ...

  2. 2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比

    原文:2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比 title author date CreateT ...

  3. Java基础知识强化72:正则表达式之判断功能(手机号码判断 和 校验邮箱)

    1.  判断功能: 使用了String类的matches方法,如下: public boolean matches(String regex): 2. 判断手机号码的案例: package cn.it ...

  4. MyBatis参数为Integer型并赋值为0时判断失误的问题解决

    mybatis.xml中有if判断条件判断参数不为空时,赋值为0的Integer参数被MyBatis判断为空,因此不执行<if test="param != null and para ...

  5. iOS 设备定位功能可用的判断

    if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] ...

  6. 获取Win和Linux系统启动时间,类似uptime功能,用于判断是否修改过系统时间

    目录 前言 测试代码 Win测试 Linux测试 总结 前言 有时候需要判断系统是否有修改过时间,最简单的方法就是获取当前时间A,然后sleep X秒,然后获取 时间B,如果 时间B - 时间A ≠ ...

  7. jquery ajax 赋值问题, 后面程序判断逻辑用

    添加async:false; 像 $.get() 等是没有async参数的, 所以需要用到如下 $.ajaxSetup({ async : false //这个意思是等这个ajax有了返回值后才会执行 ...

  8. GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率

    GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率 功能丰富的 Java 工具包.它帮助我们实现了常用的工具方法,从而减少代码的体积,提高开发效率.该项目最初是作者工作项目中的 ...

  9. ES 大批量写入提高性能的策略

    1.用bulk批量写入 你如果要往es里面灌入数据的话,那么根据你的业务场景来,如果你的业务场景可以支持让你将一批数据聚合起来,一次性写入es,那么就尽量采用bulk的方式,每次批量写个几百条这样子. ...

随机推荐

  1. 实验1_IPv6地址配置

    IPv6地址配置 实验任务 (1)掌握如何在路由器及PC上配置IPv6地址 (2)掌握如何用IPv6 ping命令进行IPv6地址可达性检查 (3)掌握如何用命令来查看IPv6地址配置 实验过程 在R ...

  2. (转)Should 断言的基本使用方法

    一.基础 RobotFramework带有丰富的系统关键,使用时无需导入,直接使用,为写自动化用例带来了极大的方便:不能停留在知道或者是会得程度,只有熟练使用各关键字,才能提升自动化用例的写作效率.下 ...

  3. linux下配置lamp时候出现The requested URL /info.php was not found on this server问题

    在经历修改各种配置文件和各种文件权限后,发现了怎么解决 On newer versions of Ubuntu, the document root is set to /var/www/html i ...

  4. 【转载】关于在vs2013中配置opengl红宝书第八版环境

     本文为转载 原文地址 http://blog.csdn.net/qq821869798/article/details/45247241 本人刚开始学习opengl,买了一本opengl红宝书第八版 ...

  5. [转]DB2 load参数

    本文持续更新,LOAD如何提高parallelism.LOAD SHRLEVEL CHANGE的性能提高. =========================== Every once in a wh ...

  6. linq group by子句

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. RestEasy 3.x 系列之四:使用Hibernate_Validator进行数据校验

    使用Hibernate_Validator进行数据校验,好处不言而喻:规范统一,低耦合度. 1.pom.xml <dependency> <groupId>org.hibern ...

  8. 【深度学习】之Caffe的solver文件配置(转载自csdn)

    原文: http://blog.csdn.net/czp0322/article/details/52161759 今天在做FCN实验的时候,发现solver.prototxt文件一直用的都是mode ...

  9. sqlserver和Oracle内部的错误数据修复(DBCC、DBMS_REPAIR)

    数据库长时间运行后,因断电.操作系统.物理存储等的原因可能会造成数据库内部的逻辑或物理错误,我们可以使用一般的方式尝试修复. 对于sqlserver 我们可以使用DBCC命令: -- sqlserve ...

  10. MySQL 使用笔记(一) 关联

    2016-12-16 一.当前未掌握总结: 目前MySQL中不会的内容: 1.临时表(变量表) 2.存储过程 3.游标 4.函数 二.关联 内联.左关联.右关联.外联 (一).标准sql语句中的关联及 ...