打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
闲得发慌篇_字符串直接赋值与替换性能对比

今天在学习winform项目时,看到同时是这样解决text文本框变换值的:

winform界面是这样的

于是我在想,为什么不直接进行赋值来进行变换,而通过替换局部字符串来变换呢?两者之间有什么区别?到底哪一种的性能会好点?于是带着种种疑问,设计了如下实验:

using System;
using System.Diagnostics;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            var str1 = "转到编辑界面";
            var num = 0;
            while (num < 5)
            {
                test1(str1);
                test2(str1);
                num += 1;  
         System.Console.WriteLine("====================="); } } private static void test1(string str1) { var num = 0; var str = str1; var sw = new Stopwatch(); sw.Start(); while (num < 100000) { if (str == str1) str = str.Replace("编辑", "预览"); else str = str.Replace("预览", "编辑"); num += 1; } sw.Stop(); System.Console.WriteLine(sw.ElapsedMilliseconds); } private static void test2(string str1) { var num = 0; var str = ""; var sw = new Stopwatch(); sw.Start(); while (num < 100000) { str = str == str1 ? "转到预览界面" : "转到编辑界面"; num += 1; } sw.Stop(); System.Console.WriteLine(sw.ElapsedMilliseconds); } } }

运行结果如下:

通过结果我们知道,两者直接是存在性能差异的,而且直接赋值比局部替换效率高,大概5倍左右。

原因分析:

  1、Replace需要进行检索、替换,再修改指针地址,而直接赋值的则不需要考虑检索。

  2、字符串具有驻留性,在对变量赋相同值时,不会频繁开辟空间,而是直接将已有字符串的地址赋值给该变量。 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c# – 将字符串分隔到不在集合字典中的列表中
C#传委托给C的函数指针调用问题
C# params的用法详解
某招聘题:将一串字符中的所有字母减去1输出,其中字母a为w
Guid ToString 格式知多少?
深入研究.Net空字符串判断
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服