StringBuilder 真的比连接十几个字符串慢吗?

2024-04-09

StringBuilder 真的比连接十几个字符串慢吗? 编译器如何优化字符串连接,使得使用“+”连接十几个字符串会比StringBuilder更好?

从一本(本·沃森写的)书中说:

字符串连接:用于简单连接已知的(在编译时) time) 字符串数量,只需使用“+”运算符或 String.Concat 方法。这通常比使用 字符串生成器。字符串结果 = a + b + c + d + e + f;不要 考虑 StringBuilder 直到字符串数量可变并且 可能大于几十个。编译器会优化简单 字符串连接以减少内存开销。


String.Concat效率更高,因为它从一开始就知道所有字符串长度。因此它可以分配一个长度合适的缓冲区,将字符串复制到其中并返回该缓冲区。

StringBuilder必须分配一个小缓冲区,每次调用时重新分配和复制Append导致它空间不足。最后的调用ToString()还必须分配另一个缓冲区。

So use String.Concat当你事先知道你有多少根弦时;使用StringBuilder当你不这样做时。

在 C# 中,对 + 运算符的链式调用会自动转换为对String.Concat.

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

StringBuilder 真的比连接十几个字符串慢吗? 的相关文章

  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • 开始使用 TDD?

    我们正处于尝试实施 TDD 的初始阶段 我演示了 Visual Studio Team System 代码覆盖率 TDD 工具 团队对这种可能性感到兴奋 目前我们使用 Devpartner 进行代码覆盖 但我们希望消除它 因为它很昂贵 我们
  • 如何修复 TcpClient Ip 标头错误校验和

    我正在使用 System Net Sockets TcpClient 类 但每当我通过网络发送自定义数据包时 我都会在wireshark捕获上看到错误的校验和 我该如何修复它 问题是您在网络接口上设置了校验和卸载 这会导致您的网卡计算校验和
  • 如何确定字符串的最小公约数?

    我在面试时被问到以下问题 并被它难住了 我遇到的部分问题是要下定决心要解决什么问题 起初我并不认为这个问题在内部是一致的 但后来我意识到它要求你解决两个不同的问题 第一个任务是弄清楚一个字符串是否包含另一个字符串的倍数 但第二个任务是在两个
  • 会员提供商使用还是不使用?

    我正在开发一个使用 Facebook 的网站 现在为了管理用户我想使用MembershipProvider并选择开发一个定制的会员提供商 我的问题是我的数据库架构与标准成员资格架构不匹配 并且提供的用于覆盖的函数采用与我预期不同的参数 例如
  • C 风格强制转换与内在强制转换

    假设我已经定义了 m256d x我想提取低 128 位 我会做 m128d xlow mm256 castpd256 pd128 x 然而 我最近看到有人这样做 m128d xlow m128d x 是否有用于演员的首选方法 为什么要用第一
  • Apple IOS 上的 C# 应用程序 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有基于 C Net 的应用程序 有什么方法可以在 Apple IOS 上运行这些应用程序吗 我没有资
  • 使用 c# 中的 c++ ref 中的引用从 C# 调用 C++ 代码错误

    所以在我的 c dll 文件中我得到了以下函数 DLL void GetUserPass char userName char passWord userName ceva passWord altceva 现在我想从 c 调用它 但它给了
  • 使用 OpenSSL 库在 C++ 中生成 SHA 哈希值

    如何使用以下命令生成 SHA1 或 SHA2 哈希值OpenSSL https openssl org图书馆 我搜索了谷歌 找不到任何函数或示例代码 从命令行来看 很简单 printf compute sha1 openssl sha1 您
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • C++中的虚方法表存放在哪里?

    我想知道类对象 不是实例 而是类 如何存储在内存中 class A public int a virtual void f virtual A class B public A public int b void f final overr
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • OpenMP 和 C++:this 指针

    Is thisOpenMP 中始终共享指针 尽管编译器不会抱怨以下代码default none pragma omp parallel for default none shared n for SInt i 0 i lt n i f i
  • 当一种语言是另一种语言的平行超集时,这意味着什么?

    我正在阅读关于实时并发 C 的期刊文章 http link springer com article 10 1007 2FBF00365999 并且它在摘要中提到 因此你们中的任何人都可以通过该链接查看上下文 Concurrent C 是
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • Sharepoint 的 CAML 查询中的日期时间比较

    我正在尝试从共享点列表中获取某些项目 具体取决于自定义列中的日期 我已经使用 U2U Caml Builder 创建了查询 这很有效 但是当我将其放入 Web 部件中自己的代码中时 它总是返回列表中的所有项目 这是我的代码 DateTime
  • 使用客户端 hello 消息进行 TLS 协议检测

    我需要检测网络流量中的 https 数据包 到目前为止 我将所有 443 标记为 https 但我不想再在这种情况下使用端口信息 检查客户端问候消息是否足够 Check 22 and version info 0300 0301 or 03
  • 如何重写(重新实现)QFileSystemModel 中的成员函数

    我已经为此苦苦挣扎了一段时间 Qt s QFileSystemModel由于图标获取算法非常糟糕 在获取数百个文件时速度非常慢 我想完全禁用图标 它们被提取到QFileSystemModel data方法不是虚拟的 QFileSystemM
  • C++11 中引入了哪些重大更改?

    我知道 C 11 中至少有一项更改会导致一些旧代码停止编译 引入explicit operator bool 在标准库中 替换旧实例operator void 诚然 这将破坏的代码可能是一开始就不应该有效的代码 但它仍然是一个破坏性的变化
  • 如何在 C# 中将 json 转换为平面结构

    我正在尝试用 C 编写函数 将 JSON 转换为键 值对 它应该支持数组 例如下面的 JSON title title value components component id id1 menu title menu title1 tit

随机推荐

  • 尝试通过我的新域访问 WordPress with LiteSpeed 时显示 404

    我已经在 Digital Ocean Droplet 中创建了一个带有开放 LiteSpeed 缓存的 WordPress 实例 如果我在 设置 常规站点 和 WordPress URL 中配置了 IP 则它可以正常工作 但是当我添加我的
  • SQL:枚举每个组内返回的行

    假设我有一个SELECT 返回某物的查询 像这样 role name MANAGER Alice WORKER Bob WORKER Evan WORKER John MANAGER Max WORKER Steve 是否可以添加另一列来枚
  • 从 Git 存储库安装 Python 包后,某些文件夹丢失

    我想从以下存储库安装软件包https github com geomin django countria https github com geomin django countria 我正在使用的命令是pip install git gi
  • Xcode 存档调试条错误

    我正在尝试将大型遗留 C 库与 iOS 应用程序集成 我们能够在设备上构建并运行 但无法存档该应用程序 归档失败并出现以下错误 命令 Applications Xcode app Contents Developer Toolchains
  • 关闭依赖项的默认功能

    我有一个依赖链 最终依赖于可选地在已弃用的库上 具体来说 我想使用间接依赖于 rustc serialize 的 nalgebra 如下所示 nalgebra gt alga gt num complex gt 可选默认值 rustc se
  • 与多处理错误的另一个混淆是,“模块”对象没有属性“f”

    我知道之前已经回答过这个问题 但似乎直接执行脚本 python filename py 不起作用 我在 SuSE Linux 上安装了 Python 2 6 2 Code usr bin python coding utf 8 from m
  • Spark 作业在 YARN 模式下失败

    我有一个用 Scala 编写的 Spark 程序 它从 HDFS 读取 CSV 文件 计算新列并将其保存为 parquet 文件 我正在 YARN 集群中运行该程序 但每次我尝试启动它时 执行程序都会在某个时候失败并出现此错误 您能帮我找出
  • 如何验证nginx是否正在运行?

    After 运行 ASP NET vNext 项目 http xameeramir github io asp net 5 ubuntu linux 在我的本地机器上我试图弄清楚如何运行它nginx https www nginx com
  • 绑定 elementname 究竟是如何工作的?

    我记得几周前读过 它有时在模板内不起作用 我最近尝试在两个不同的窗口中绑定东西 但它找不到名称声明 所以我假设它是本地的命名空间类 只需通过设置 datacontext 来绑定 然而 我真的很好奇什么时候能够使用绑定元素名 什么时候不能使用
  • __cxa_pure_virtual 的目的是什么?

    在使用 avr gcc 编译时 我遇到了如下链接器错误 undefined reference to cxa pure virtual 我发现了其中指出 The cxa pure virtualfunction 是一个错误处理程序 在调用纯
  • 搜索所有网络上的设备

    我想实现一个代码 通过它我可以列出网络上连接的 upnp 兼容媒体渲染器设备 我用谷歌搜索了这个并找到了以下代码扭曲的网站 https twistedmatrix com documents current core howto udp h
  • 使用 Java 将数据写入 Google Sheets

    我需要将收到的所有反馈放入 Google 表格中 我正在关注这个article https www baeldung com google sheets java client这样做 但问题是 如果我按照这篇文章进行操作 每次需要将某些内容
  • SharedPreferences.edit() 没有相应的 commit() 或 apply() 调用

    我正在将 SharedPreferences 用于我的应用程序的介绍滑块 但是 我在这一行收到错误 class PrefManager private SharedPreferences pref private SharedPrefere
  • Jquery fadeIn 导致滚动顶部,我该如何解决?

    我对 jQuery fadeIn 或 fadeOut 方法有疑问 我建立了一个文章旋转器 一切正常 但是当页面滚动到底部并且文章旋转时出现问题 fadeIn 或fadeOut 方法导致滚动到文章位置 我认为这些方法改变了body的css t
  • 如何在后台线程中创建和使用WebBrowser?

    如何在后台 STA 线程中创建 System Windows Forms WebBrowser 我尝试使用这样的代码 var tr new Thread wbThread tr SetApartmentState ApartmentStat
  • 在控制台上用Java打印金字塔

    我怎样才能像这样在Java中打印金字塔 1 23 456 78910 我当前的代码如下所示 public class T public static void main String args int i j num 1 int n Int
  • 使用spring构建Web项目时如何修复MojoFailureException

    最近我使用spring STS和roo 1 2 0 M1来构建一个web项目 我设置了 jpa 并创建了一个具有某些字段的实体 并为该实体创建了一个存储库和一个服务层 然后当我执行测试时 它给出了以下错误 roo gt perform te
  • MongoDB 查询速度过慢,即使查询很简单并且与索引对齐

    我正在运行一个 MongoDB 服务器 这实际上就是它运行的全部内容 该服务器拥有 64GB RAM 和 16 个内核 以及 2TB 硬盘空间 文档结构 数据库有一个集合domains拥有大约 2000 万份文档 每个文档中都有相当多的数据
  • SQL JOIN 查询编写

    我正在尝试编写一个涉及两个表的简单查询 人 表有其独特之处person id and a name 朋友 表有一个person id and a friend id这是一个 FK 到person id在人员表中 person
  • StringBuilder 真的比连接十几个字符串慢吗?

    StringBuilder 真的比连接十几个字符串慢吗 编译器如何优化字符串连接 使得使用 连接十几个字符串会比StringBuilder更好 从一本 本 沃森写的 书中说 字符串连接 用于简单连接已知的 在编译时 time 字符串数量 只