为什么 C# 中函数 isprefix 比 Startswith 快?

2024-03-25

有谁知道为什么 C# (.NET) 的以。。开始 http://msdn.microsoft.com/en-us/library/system.string.startswith.aspx函数比IsPrefix http://msdn.microsoft.com/en-us/library/system.globalization.compareinfo.isprefix.aspx?


我认为这主要是获取线程当前的文化。

如果您将 Marc 的测试更改为使用这种形式String.StartsWith:

    Stopwatch watch = Stopwatch.StartNew();
    CultureInfo cc = CultureInfo.CurrentCulture;
    for (int i = 0; i < LOOP; i++)
    {
        if (s1.StartsWith(s2, false, cc)) chk++;
    }
    watch.Stop();
    Console.WriteLine(watch.ElapsedMilliseconds + "ms; chk: " + chk);

它更接近了。

如果你使用s1.StartsWith(s2, StringComparison.Ordinal)它比使用快很多CompareInfo.IsPrefix(取决于CompareInfo当然)。在我的盒子上,结果是(不科学):

  • s1.StartsWith(s2): 6914ms
  • s1.StartsWith(s2, false, 文化): 5568ms
  • 比较.IsPrefix(s1, s2): 5200ms
  • s1.StartsWith(s2, StringComparison.Ordinal): 1393ms

显然,这是因为它实际上只是在每个点比较 16 位整数,这非常便宜。如果你don't想要文化敏感的检查,and性能对您来说特别重要,这就是我要使用的重载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 C# 中函数 isprefix 比 Startswith 快? 的相关文章

  • R 中的匹配和计数字符串(DNA 的 k 聚体)

    我有一个字符串列表 DNA 序列 包括 A T C G 我想找到所有匹配项并插入到表中 该表的列都是这些 DNA 字母表的所有可能组合 4 k k 是每个匹配项的长度 K mer 必须由用户指定 行代表 DNA 字母表的数量在列表中按顺序匹
  • 将对象列表打印到控制台

    我创建了一个带有 Listobj 对象类型的列表 并向对象添加了一组值 如何以年龄增长的方式从 newlist 中打印 Listobj 对象 class Listobj int age string name public int Age
  • 捕获所有内部异常详细信息的最佳实践是什么? [复制]

    这个问题在这里已经有答案了 记录完整异常详细信息 包括所有可能的内部异常 的最佳实践是什么 目前 我使用以下代码 try some code that throws an exception catch Exception ex do Co
  • 使用 AppDomains 并行化非线程安全 DLL

    我有一个非托管 C DLL 我的 NET 应用程序通过 p invoke 使用它 我从这个 DLL 中需要的方法相当耗时 我想并行化方法调用 问题是它使用了一堆静态和全局变量 因此它不是线程安全的 并且无法更改 我的计划是通过从多个 App
  • 如何在 Visual Studio 2015 中为多个解决方案和项目设置单个 Nuget 包文件夹

    我们正在 Visual Studio 2015 中开发多个解决方案 这些解决方案共享一些需要 nuget 包的核心项目 当从一个解决方案添加 nuget 包并随后由另一解决方案打开时 无法解析 nuget 引用 文件夹结构如下 Codeba
  • 返回没有属性名称的 Json 结果

    很可能是一个相当微不足道的问题 但我就是找不到合适的答案 我想返回一个 JsonResult 但实际结果没有任何属性名称 这是我想要实现的一个小例子 xbox Xbox 360 Xbox cheats Xbox 360 games The
  • Python:多重分配与单独分配速度

    我一直在寻求从我的代码中挤出更多的性能 最近 在浏览时这个 Python 维基页面 https wiki python org moin PythonSpeed 我发现了这个说法 多重分配比单独分配慢 例如 x y a b 比 x a y
  • ClickOnce 应用程序和 Windows 8 认证

    是否有可能有一个单击一次 http en wikipedia org wiki ClickOnce WPF http en wikipedia org wiki Windows Presentation Foundation应用程序经过认证
  • 使用 Hibernate 映射 Map

    似乎在我看来 到处都有过时的版本 不再起作用 我的问题看起来很简单 我有一个 Java 类 它映射到 derby 数据库 我正在使用注释 并成功地在数据库中创建了所有其他表 但在这个特定的示例中 我只需要一个 Map 它不使用任何其他类 只
  • 对大数据块进行反应非阻塞渲染

    最近我开始学习反应并想知道是否有某种模式可以用于大数据的非阻塞 UI 线程渲染 比方说 我们采取这个例子 https www mendix com tech blog making react reactive pursuit high p
  • Socket.*Async 方法是线程化的吗?

    我目前正在尝试找出最小化 TCP 主服务器中使用的线程数量的最佳方法 以便最大限度地提高性能 由于我最近阅读了大量 C 5 0 的新异步功能 异步并不一定意味着多线程 这可能意味着将有限状态对象分成较小的块 然后通过交替与其他操作一起进行处
  • 在 JavaScript 中嵌套“switch”案例:有速度优势吗?

    这里有新手问题 我有一个包含大量字符串的 开关 像这样按字母顺序拆分是否有速度优势 switch myString substring 0 1 case a switch myString case a string beginning w
  • .Net 将 NULL 值从变量值插入 SQL Server 数据库

    也有类似的问题 但答案不是我想要的 如果引用为 NULL 或尚未分配值 我想将 NULL 值插入 SQL Server 数据库 目前我正在测试 null 它看起来像 String testString null if testString
  • 在 PCL 中使用 System.Net.Sockets(.Net 4.5 + 电话 8)

    我现有的 Net 库已经适用于 Net 4 5 和 Windows Phone 8 现在我想将其转换为可移植类库 突然我无法使用System Net Sockets不再了 我只检查了 Net 4 5和Windows Phone 8 未选择X
  • PrintStream是有缓冲的,但是flush不会降低性能,而BufferedOutputStream会加速性能

    我预计由于 PrintStream 是缓冲的 通过在每次 print 之后添加刷新操作 速度性能应该会显着降低 但事实并非如此 如下面的代码片段所示 此外 将 PrintStream 包裹在 BufferedOutputStream 周围可
  • Angularjs 在生产中禁用调试数据

    我正在尝试按照角度文档中的建议禁用生产服务器中的调试数据here https docs angularjs org guide production 补充一点 我并没有真正看到性能和加载时间有任何改进 这是我的代码在 app js 中的样子
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 如何访问窗口?

    我正在尝试使用其句柄访问特定窗口 即System IntPtr value Getting the process of Visual Studio program var process Process GetProcessesByNam
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec

随机推荐

  • Objective-C 将数字舍入到最接近的 50

    如何将数字四舍五入到最接近的 X 值 例如 50 IE 47 就是 50 24 将是 0 74 就是 50 99 就是 100 etc 我真的不知道从哪里开始研究如何做到这一点 附 我在 iPhone 上使用 cocoa touch 多谢
  • 使用lambdaify将硬积分转换为lambda函数

    我想对函数进行羔羊化Integral t t t 0 x 它有效 但是我的新函数由lambdify 不返回数字 而仅返回sympy integrals integrals Integral班级 但我不希望这样 我希望它返回一个浮点数 这是我
  • Hibernate 不保存值的集合

    好吧 我现在已经在几个项目中使用了 Hibernate 但在使用它之前我并没有了解它的复杂性 我开始查看使用 JPA 注释并与 Spring 集成的代码 一切运行良好 但现在我想向我的学生教授基本的 Hibernate 并且我正在创建一个示
  • 如何摆脱“从预捆绑文件加载”消息?

    在启动屏幕之后 但在加载应用程序之前 屏幕顶部会出现一条 正在从预捆绑文件加载 消息 持续时间只有几百毫秒 我在开发中不介意这一点 但在手机上运行时我仍然看到此消息 这是我创建捆绑包的方法 有任何想法吗 谢谢 react native bu
  • Cardview Click 未打开活动

    我的问题 no error in this project i can run successful 我的按钮可以在特定时间点击 当我点击回来时 它根本不起作用 我认为我的问题与父母有关 我的项目父级有什么错误 请帮帮我 下面是我的 Jav
  • WCF Web服务流响应的最佳实践

    我正在尝试从 WCF Web 服务中提取大量数据 请求相当小 而响应消息将非常大 目前 由于 IIS6 对其可分配的内存 1 4GB 有限制 Web 服务正在引发 SystemOutOfMemory 异常 我在一些博客中读到 实施流式传输可
  • 如何优雅地降级 CSS 视口单位?

    CSS 视口单位 vw vh vmin vmax 非常棒 我想开始将它们用于字体 但我注意到here http caniuse com viewport units他们没有得到广泛的支持 我尝试在不支持的浏览器中搜索任何用于优雅降级的最佳实
  • ASP.NET MVC 4 参数由正斜杠“/”分隔,未正确传递参数

    我试图遵循许多网站使用的约定 这些网站使用多个正斜杠传递参数 而不是使用 GET 模型 也就是说 我希望使用如下 URL http www foo bar controller action arg1 a arg2 b arg3 c 以这种
  • jquery-select2 ajax搜索在另一个div中显示标签

    我想在另一个 div 中显示所选结果 而不是在输入框中显示 function formatRepo repo if repo loading return repo text var markup div class select2 res
  • 计算出的“goto”是否尊重 C++ 对象的生命周期?

    Regular goto在 C 中尊重对象生命周期 即使用goto跳出块将为适当的局部变量运行析构函数 start NonTrivial object if again goto start will call object NonTriv
  • 为什么oracle区分大小写?

    Oracle 默认区分大小写 而 SQL Server 和 MySQL 等其他数据库默认不区分大小写 这是否有原因 我知道有一些方法可以启用 禁用区分大小写 但 Oracle 与其他数据库不同似乎很奇怪 我还试图了解区分大小写的原因 我可以
  • 如何在 RichFaces/JSF 页面中嵌入和调用 javascript 脚本

    我一直在寻找一种在 JSF 页面中嵌入和调用 javascript 函数的方法 我也在使用 RichFaces 为了定义该函数 我似乎可以以跨浏览器支持的方式执行此操作
  • 模板参数中的自引用模板

    我该怎么做才能使这项工作成功 template
  • 使用 OpenCV 捕获 H264 流

    所以 一段时间以来 我一直在尝试让我的 Raspberry Pi 2 使用 OpenCV 从我的 Logitech C920 捕获 H264 流 我一直在互联网上搜寻信息 但没有运气 简短的系统描述 Raspberry Pi 2 运行 Ra
  • 透明背景上的 CoreText 字体平滑

    我尝试在 半 透明背景上使用 CoreText appkit 版本 进行渲染 结果边缘不平滑 在网上搜索表明这个问题没有解决方案 但是我不相信它 因为一个简单的观察 如果我创建一个包含相同字符串的 CATextLayer 那么字体是可爱和平
  • git全局配置问题

    不知何故 我的全局 git msysgit 设置user name and user email 天知道还有什么 被设置为最近前同事的详细信息 当我尝试改变它们时 我得到了could not commit to u gitconfig 如果
  • 将 SpringCloudSleuth 与 AWS X-Ray 集成

    我有一个使用 Springboot 应用程序运行 Fargate 实例的 ECS 集群 并且希望以最少的代码更改来启用跟踪 我开始研究两种方法 使用 AWS Xray 步骤 gt 添加依赖项 添加 WSXRayServletFilter 在
  • 删除numpy数组中的行

    我有一个可能如下所示的数组 ANOVAInputMatrixValuesArray 0 96488889 0 73641667 0 67521429 0 592875 0 53172222 0 78008333 0 5938125 0 48
  • 追求纯 CSS 布局有商业原因吗?

    似乎每次我尝试创建纯 CSS 布局时 都会比使用一两个表格花费更长的时间 让三列具有不同数量的数据的相同长度似乎需要特殊的技巧 特别是在处理跨浏览器问题时 我的问题 这几张桌子会伤害谁 表格似乎在表格数据上特别有效 为什么它们在当今时代如此
  • 为什么 C# 中函数 isprefix 比 Startswith 快?

    有谁知道为什么 C NET 的以 开始 http msdn microsoft com en us library system string startswith aspx函数比IsPrefix http msdn microsoft c