StringBuilder 真的比 Aggregate 快吗?

2023-12-03

        string c = tmpArr[0].Aggregate(string.Empty, (current, m) => current + (m.Name + " "));

        StringBuilder sb = new StringBuilder();

        foreach (Mobile m in tmpArr[0])
            sb.Append(m.Name + " ");

        sb.ToString();

这两个哪个更快?聚合当然更干净,但是它速度快还是与做的一样

foreach(Mobile m in tmpArr[0])
    c += m.Name + " ";

我真正想做的是string.Join(",",tmpArr[0]),但我不希望它连接它们的 ToString 值,而只是连接它们的名称,我该如何做到最好?

我不使用的问题string.Join我实际上必须做这样的事情:

        string separator = "";
        StringBuilder sb = new StringBuilder();

        foreach (Mobile m in tmpArr[0])
        {
            separator = ", ";
            sb.Append(separator + m.Name);
        }

如果您在循环中附加字符串 (c += m.Name + " ";)您导致创建大量中间字符串;这会导致“伸缩”内存使用,并给 GC 带来额外的负载。聚合,与 StringBuilder 的 Fluent-API 混合可以在这里提供帮助 - 但与 StringBuilder 的循环一样。重要的不是聚合,而是不创建大量中间字符串.

例如,我会使用:

foreach (Mobile m in tmpArr[0])
        sb.Append(m.Name).Append(" ");

更少;p

对于在 Aggregate 中使用 StringBuilder 的类似示例:

string c = tmpArr[0].Aggregate(new StringBuilder(),
    (current, m) => current.Append(m.Name).Append(" ")).ToString();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

StringBuilder 真的比 Aggregate 快吗? 的相关文章

  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • CosmosDB + 分组依据

    我需要使用 GROUP BY 条款Azure 数据资源管理器但我认为是不支持的 有人有解决或避免分组的想法吗 此致 最后 Azure Cosmos DB 目前支持GROUP BY在 NET SDK 3 3 或更高版本中 目前尚不支持其他语言
  • Twilio webhook 短信响应格式

    我在我的应用程序中使用 Twilio 并且我有 SMS Webhooks 其中我的 SMS 号码配置了 URL 一切正常 除了 Twilio 在每个请求的日志中向我发送错误 我认为我的应用程序的响应格式不正确 但我在文档中找不到如何使用 J
  • 扩展函数原型

    我希望能够扩展javascript中的函数原型 也就是说 向所有函数添加一个函数 目的是将其转换为一种格式 以便在另一种语言 即 ruby 它只能通过字符串进行通信 在这种特定设置中 之间进行交换 我已经有了一个系统 因此我可以通过定义一个
  • 在 iPhone SDK 中获取我所在位置的海拔高度(距海平面的高度)

    我正在尝试在我的应用程序中获取我所在位置的海拔高度 但每次我尝试altitude的财产CLLocation我得到的对象0 00结果 我用谷歌搜索我的查询 得到了类似的问题here and here 该链接表示 如果我通过 wifi 或手机信
  • 如何使用 JavaScript 打开带有打印对话框的文件

    我想使用 JavaScript 打开一个 Word 文档 并为该打开的文档窗口打开打印对话框 这是我的代码 window open http www tizaq com window print 它可以工作 但是打印对话框是为当前窗口打开的
  • 有什么方法可以使用 4 个点而不是 3 个点来绘制图像(透视扭曲)

    Graphics DrawImage 很好地支持绘制平行四边形 Bitmap destImage new Bitmap srcImage Width srcImage Height using Graphics gr new Graphic
  • Google App Engine app.yaml PHP 脚本参数

    在我的 GAE PHP app yaml 中 我尝试这样做 application myapp version 1 runtime php api version 1 threadsafe yes handlers url sitemap
  • 如何在 tkinter 中使无声异常变得更响亮?

    如果我从终端运行以下代码 我会在终端中收到一条有用的错误消息 import Tkinter as tk master tk Tk def callback raise UserWarning Exception b tk Button ma
  • bind_param() 仅对用户输入的值有用还是全部?

    我一直在阅读 SQL 注入 但找不到这个问题的答案 我明白如果我有这样的查询 prepare SELECT id foo bar FROM table WHERE username 那我应该使用bind param s username 以
  • 在哪里保存 Firefox 插件的文件?

    我正在开发一个 Firefox 插件 它可以生成网站的缩略图以供插件使用 到目前为止 我一直使用简单存储通过图像数据 URL 来存储它们 这样做有两个问题 存储空间有限 并且发送很长的字符串似乎不是最佳选择 我假设浏览器已经优化了加载图像文
  • Inno Setup ExtractTemporaryFile 导致向导冻结

    我制作了自定义页面来根据用户的选择来管理特定的 redist 工具安装 如果用户想要或不安装这些工具 这些工具会链接到用户选中的复选框 然后出现一个页面 向用户显示每个工具的安装进度 我在这里遇到的问题是进度页面仅在第一次时显示Extrac
  • 扫描仪只读取文件名,不读取其他内容

    我正在尝试实现一个基本的词法分析器 我现在陷入了文件解析的困境 public ArrayList
  • 从 NSData 转换的 NSString 中删除 unicode 和反斜杠转义

    我通过以下方式将响应数据从 Web 请求转换为 NSString NSData data self responseData if data return nil NSStringEncoding encoding CFStringConv
  • 检查 PHP cURL 服务器响应中的标头

    我一直在使用 PHP curl 从远程网站获取我需要的数据 这是我使用的 cURL 函数 function get content adr ch curl init curl setopt ch CURLOPT URL adr curl s
  • Android - 强制网络请求通过wifi而不是移动网络

    我有一个连接到硬件设备 Wi Fi 热点的应用程序 Android 似乎通过其他网络 例如 3G 4G 而不是热点转发请求 因为我的热点没有互联网连接 有什么办法可以强制网络流在 wifi 上工作吗 我遇到过以下函数 但它已被弃用 http
  • 仅适用于英国和 Woocommerce 3 中的特定产品的定制免费送货

    我一直在尝试为客户的促销产品创建免费送货选项 该产品将在全球范围内发货 但仅对来自英国的订单提供免费送货选项 因此 当有人从美国或香港订购时 将应用通常的费率 但不知何故 我无法将这些国家 地区排除在运输类别之外 我没有使用免费送货方法 因
  • Appcelerator Titan Android 推送通知 GCM 失败?

    我已经在 Appcelerator studio 的新项目中设置了 Android 和 IOS 的推送通知 IOS 工作正常 但 android 不行 我的问题是 android 设备令牌已成功获取并注册 但当我从 Appcelerator
  • 当用户将文本拖放到文本框中时,如何使用 JQuery 检测值更改事件?

    我正在使用这个 jQuery 代码 input bind change mouseup 检测用户是否将文本拖动到我的输入中并更改其值 但这似乎行不通 为什么它不起作用以及如何让它起作用 var inputField input var ol
  • Numpy 就地修改数组?

    我有以下代码试图规范化 a 的值m x n数组 它将用作神经网络的输入 其中m是训练样本的数量 n是特征的数量 但是 当我在脚本运行后检查解释器中的数组时 我发现这些值没有标准化 也就是说 它们仍然具有原始的值 我想这是因为分配给array
  • StringBuilder 真的比 Aggregate 快吗?

    string c tmpArr 0 Aggregate string Empty current m gt current m Name StringBuilder sb new StringBuilder foreach Mobile m