C# 字符串比较效率测试

Unity字符串比较性能优化:从原理到实战的最佳实践 在C#和Unity开发中,字符串操作是基础且频繁的技术环节,其底层机制直接影响应用性能。字符串的不可变性意味着每次修改都会创建新对象,可能引发垃圾回收(GC)压力。而字符串比较则涉及更复杂的机制,如字符串驻留(编译时常量共享内存)和文化区域规则。从技术价值看,理解这些原理能帮助开发者规避性能陷阱,写出更高效的代码。在游戏开发、高频逻辑判断、资源加载等应用场景中,不当的字符串比较会成为性能瓶颈,尤其是在移动端和大型项目中。本文聚焦于Unity/C#中字符串比较的效率差异,通过基准测试对比了==操作符、stri 阅读详情

这里用String比较的静态方法public static int Compare(String strA, String strB, StringComparison comparisonType);来测试不同的StringComparison的效率

直接上代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Globalization;
using System.Diagnostics;

namespace StringCompare
{
    class Program
    {
        static void Main(string[] args)
        {
            Compare(StringComparison.Ordinal);
            Compare(StringComparison.OrdinalIgnoreCase);
            Compare(StringComparison.InvariantCulture);
            Compare(StringComparison.InvariantCultureIgnoreCase);
            Compare(StringComparison.CurrentCulture);
            Compare(StringComparison.CurrentCultureIgnoreCase);

        }


        public static void Compare(StringComparison comparison)
        {
            string s1 = "visualstudio";
            string s2 = "windows";
            Stopwatch watch = new Stopwatch();
            watch.Start();
            for (int i = 0; i < 10000000; i++)
            {
                String.Compare(s1, s2, comparison);
            }
            watch.Stop();
            Console.WriteLine(watch.ElapsedMilliseconds+"    " +comparison.ToString());


        }
    }
}

结果:
在这里插入图片描述

通过结果可以看出:
StringComparison.Ordinal效率是最高的,是其它两个的20倍多!
所以比较的时候没有需求要求的情况下尽量用Ordinal

参考文章:
C# 字符串比较优化(StringComparison)

C#中的字符串, String类和StringBuilder类 C#中的字符串, String类和StringBuilder类 1、简介 字符串对大多数计算机程序而言非常普遍. 像文字处理软件和网页应用程序这些程序类型 都广泛采用了字符串. 这使得处理这类应用程序的程序员在字符串处理的效率问题上需要花费额外的心思. 本章会研究C#处理字符串的方法, 分析如何使用String类, 最后还会介绍如何用StringBuilder类. 当程序需要对String对象进行许多改变时会用到StringBuilder类. 这是因为字符串和String对象都是不可改变的, 阅读详情

相关推荐

sentinel滑动时间窗口算法学习

滑动时间窗口 先不说sentinel的算法实现,先说什么是滑动时间窗口, 我们在进行限流的时候,比如通过QPS进行限流,那假如我们以秒为单位,举个例子: 我设置了限流规则,qps是10 如果不使用滑动窗口算法,在统计qps的时候,就有可能会有问题,比如: 在0 - 500ms中的请求数是0,但是在500ms - 1000 ms的请求数是10;在1000ms - 1500ms 之间又进来了5个请求,此时只判断了1000ms - 2000 ms之间的请求数 因为没有把1S进行拆分多个窗口,所以在1000ms之后

小小少年的博客 3979

C#中的StringComparison:字符串比较的关键枚举,轻松实现字符串比较的各种需求...

字符串比较是C#中常见的操作,我们需要根据不同的场景选择合适的比较规则。比如,判断用户输入的用户名和密码是否正确等。为了方便我们进行字符串比较,C#中提供了一个枚举类型StringComparison,它定义了六种不同的字符串比较规则,分别是:CurrentCulture:使用当前区域的敏感排序规则和区域信息比较字符串,适合用于显示给用户的字符串。例如,如果当前区域是法语(法国),那么字符串"éc...

dotNET跨平台 1515

「大模型学习」(11)kv cache与vllm详解,一文读懂!

Key(键):表示上下文的特征。Value(值):表示上下文的内容。Query(查询):表示当前 token 的查询向量。AttentionQKVsoftmaxQKTdkVAttentionQKVsoftmaxdk​​QKT​V),每次生成一个新 token(比如下一个词),模型会再次查看之前的所有K和V,以计算当前 token 的注意力。问题:每次都重新计算之前的 K/V 很浪费!项目维度(简化)含义Q当前 token 的查询向量。

qq_43044037的博客 5405

C#中字符串的比较操作 CurrentCultureIgnoreCase

字符串比较是比较常用的操作,一般出于以下两个原因比较字符串: 判断相等 字符串排序 查询API判断字符串相等或排序时,由以下方法: public override bool Equals(object obj); public bool Equals(string value); public static bool Equals(strin...

zam183的博客 7354

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

保姆级教程:用Cadence Sigrity Power DC搞定HI3516A板卡电源压降仿真(含常见报错解决)

本文提供了一份详细的Cadence Sigrity Power DC直流压降仿真教程,特别针对HI3516A板卡设计。从环境准备、器件建模到仿真执行和结果解读,全面覆盖了电源完整性分析的关键步骤,并提供了常见报错的解决方案,帮助工程师快速掌握直流压降分析技术。

weixin_42569329的博客 322

C#字符串查找速度优化--StringComparison.Ordinal

本文一些资料参考自https://blog.csdn.net/sinat_27657511/article/details/52275327,感谢这位博主 下面就来谈下StringComparison。   public enum StringComparison  { CurrentCulture, CurrentCultureIgnoreCase, InvariantCultur...

新手小白的博客 1万+

UE5 Niagara基础知识讲解

在UE5版本中,Niagara粒子系统引入了许多可添加的模块,分别用于控制发射器的生成和更新、粒子的生成和更新以及渲染效果。本文采用虚幻5.2.1版本,以图文方式对Niagara基础知识进行讲解。

一碗清深的博客 2468

C#中string.contains和string.indexof的效率比较

今天去面试,面试官问到了题目中的问题,string.contains和string.indexof两个字符串查找方法相比哪个处理效率更高。当时完全不了解,今天回来特意查了一下,顺便和大家分享一下。 首先,我们先来单纯的从大数据角度测试一下。打开VS2010,创建一个控制台应用程序,写如下代码: using System; using System.Collections.Generic;

xiaozhudan1110的专栏 8815

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 433

Python爬虫实战:美团商家数据采集系统

本文将详细介绍如何使用Python最新技术栈构建高效的美团商家信息采集系统。内容涵盖异步爬虫、反爬对抗、数据存储、可视化分析等完整流程,提供可落地的代码方案和工程实践。

2201_76125261的博客 2658

C# 字符串比较 效率

自用草稿,勿嫌勿厌 private void btn_start_Click(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { testVoid(); Console.WriteLi

ayiis的专栏 938

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 305

c# 获取字符串数组中最长的的字符串并输出最长的字符串

求字符串数组中最大长度的字符串: 实质就是比较字符串的长度; 方案一: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 string[] array = {"张三","亲,今天购物了么!","明天你喜欢很久的人要结婚了,...

dazhexuan0219的博客 1659

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)

摘要:文章:判断一个字符串是否全是数字的多种方法及其性能比较(C#实现) 摘要:在编程的时候,经常遇到要判断一个字符串中的字符是否全部是数字(0-9),本来是一个很容易实现的功能,但程序员首先会想到的,发表于北京联高软件有限公司技术文章栏目,代码以高亮显示。 关键字:字符, 数字, 性能, 判断, time, seconds, isnumeric, int, end, start, 函数, ex

jiqiang_paul的专栏 630

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c# split效率低_C#字符串分割效率比较

标签://分割字符串效率比较public static void Fund(){//1.用string.Split方法//a.字节数组://625毫秒/百万次string str1 = "acabcdeabcdeabcde";string[] strArr1 = null;System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwa...

weixin_39580749的博客 703

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

String相等比较测试

String类字符串比较大概有4种方法:Compare(),CompareTo(), CompareOrdinal()和Equals().Compare()方法是CompareTo()的静态版本.而Equals()与"=="是等价的,只要使用"=="运算符,就会调用Equals()方法.CompareOrdinal()对两个字符串进行比较,不考虑本地化语言和文化. 看测...

alyv80488的博客 135

C#不区分大小写的字符串替换(Replace)

在.NET中,不调用C++/CLI,进行字符串替换有好几种方法: 1、最常用的,就是String实例.Replace(),但这个不能忽略大小写。 2、System.Text.Regex(Regular Expression正则表达式),大家都估计到它的效率不高,虽然它支持忽略大小写。 3、String.SubString()循环,查找要替换的子字符串的位置,截取,然后字符串相加,大...

auxv18104338的博客 795

2C#进阶-01字符串常用方法

字符串常用方法ToUpper将字符转换成大写形式,仅对字母有效。返回值是转换后的字符串。使用:字符串变量.方法名();例如:name.ToUpper();ToLower将字符转换成小写形式,仅对字母有效。返回值是转换后的字符串。使用:字符串变量.方法名();例如:name.ToUpper();Equals。

kubll的博客 136

[No000087]Linq排序,SortedList排序,二分法排序性能比较

using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace ConsoleTest { class Program { static voi...

weixin_30470857的博客 90

.NET C# Stopwatch用法

一般我们想要测试使用那种方法或着那种类型效率更高,使用Stopwatch类进行测试就可以,我也是现在才知道,汗一个。先来看个小示例,如下。前提,先引用using System.Diagnostics;命名空间。1       //实例化一个sw2Stopwatchsw=newStopwatch();3//开始计数4...

weixin_30856965的博客 1055

C# 判断字符串对象是否为空的几种方式

执行效率:string. IsNullOrWhiteSpace(object) > string.IsNullOrEmpty(object) > object.Length() == 0 > object == string.Empty > object == “”IsNullOrWhiteSpace函数。IsNullOrEmpty函数。

简小虫的博客 6259

[C#] String.Join与Enumerable.Aggregate性能测试

C# 性能测试 String.Join与Enumerable.Aggregate

m0_37681164的博客 418

学习C#:day8 2023/9/13

例如://返回所在的索引位置值。如果没有找到,返回-1。

weixin_56658994的博客 166
上一篇: C#的new关键字的几种用法
下一篇: 使用TexturePacker命令行的一个坑
 codingriver
博客等级 码龄8年 93粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值