在 ruby​​ 中使用单引号与双引号相比是否有性能提升?

2023-12-09

您知道在 ruby​​ 中使用双引号代替单引号是否会以任何有意义的方式降低 ruby​​ 1.8 和 1.9 中的性能吗?

所以如果我输入

question = 'my question'

它比更快吗

question = "my question"

我想象 ruby​​ 试图弄清楚当遇到双引号时是否需要评估某些内容,并且可能会花费一些周期来执行此操作。


Summary:无速度差异;这很棒的协作 Ruby 风格指南建议保持一致。我现在用'string'除非需要插值(指南中的选项 A)并且喜欢它,但您通常会看到更多代码"string".

Details:

从理论上讲,当您的代码是parsed,但您不仅不应该关心一般的解析时间(与执行时间相比可以忽略不计),而且在这种情况下您将无法发现显着差异。

重要的是,什么时候得到executed这将是一模一样.

对此进行基准测试仅表明缺乏对 Ruby 工作原理的理解。在这两种情况下,字符串都会被解析为tSTRING_CONTENT (see 来源在parse.y)。换句话说,CPU在创建时会经历完全相同的操作'string' or "string"。完全相同的位将以完全相同的方式翻转。对此进行基准测试只会显示不显着的差异以及由于其他因素(GC 启动等)造成的差异;请记住,在这种情况下没有任何区别!像这样的微观基准很难得到正确的结果。看看我的宝石fruity一个像样的工具。

请注意,如果有形式的插值"...#{...}...",这被解析为tSTRING_DBEG, 一堆tSTRING_DVAR对于每个表达式#{...}和决赛tSTRING_DEND。但这只是在有插值的情况下,这不是OP的目的。

我曾经建议你在任何地方都使用双引号(这样更容易实际添加#{some_var}稍后),但我现在使用单引号,除非我需要插值,\n等等...我喜欢它的视觉效果,而且它稍微更明确,因为不需要解析字符串来查看它是否包含任何表达式。

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

在 ruby​​ 中使用单引号与双引号相比是否有性能提升? 的相关文章

  • 如何制作可选的强参数键但过滤嵌套参数?

    我的控制器中有这个 params require item permit 让我们假设这个 rspec 规范 它按预期工作 put update id item id item name new name 然而 以下原因ActionContr
  • 什么决定了可变类上的 bang 方法是否返回“nil”?

    通常 可变类上的 bang 方法 例如String Array or Hash return nil当没有进行任何修改时 但一些Array爆炸方法 即collect map reverse rotate shuffle sort sort
  • 为什么我应该使用 Google 的 CDN for jQuery?

    这对某些人来说可能是显而易见的 但我一直在想 为什么我应该依赖谷歌的服务器 https developers google com speed libraries devguide为我的网站托管 jQuery 仅仅是因为这样加载速度更快吗
  • 错误 - 迭代期间无法将新密钥添加到哈希中

    我是 ruby 新手 正在使用 gem 来访问英国卫报开放平台的一些数据 contentapi ruby 运行测试示例时 我不断收到错误 TestSearchContent RuntimeError can t add a new key
  • 在 Windows 中安装 RubyGems

    我是红宝石新手 我尝试按照网站中给出的步骤在我的电脑上安装 Ruby Gemshttp rubygems org pages download http rubygems org pages download 我从上述站点下载了软件包 将目
  • 地图与星图的性能?

    我试图对两个序列进行纯Python 没有外部依赖 逐元素比较 我的第一个解决方案是 list map operator eq seq1 seq2 然后我发现starmap函数来自itertools 这看起来和我很相似 但事实证明 在最坏的情
  • 实验室数据与 Google Page Insight 的起源摘要之间的混淆

    任何知道 Core web Vitals 详细信息的人请帮我解决一些问题 How 起源总结与实验室数据不同吗 Speed Insight 如何获取起源摘要 这是同一页面或相似页面最近 28 天的总评分吗 我检查了具有相同内容的网站类别页面L
  • ruby 中 for 循环的语法

    如何在 Ruby 中执行这种类型的 for 循环 for int i 0 i
  • 在 Ruby 文档中哪里可以找到字符串转义序列?

    我可以在 中找到有关 Ruby 转义序列的详细信息 红宝石弦 http www tutorialspoint com ruby ruby strings htm and 转义序列 http en wikibooks org wiki Rub
  • 在运行时在 Rails 中向模型添加列(无需附加表)

    我试图让我的网络应用程序的管理员能够向模型添加一些新字段 该模型称为 Artwork 我想在运行时添加一个 test column 列 我只是在测试 所以我添加了一个简单的链接来做到这一点 它当然是参数化的 我设法通过迁移来做到这一点 de
  • Application.css.scss 导致 Rails 4 出现问题

    所以我一直在学习 ruby on Rails 我决定在 myrubyblog 应用程序上的新帖子页面添加一些样式 一切正常 几天后 我决定将 posts scss 文件中的 scss 导入到 application css scss 中 然
  • Rails 中的命名空间模型生成 NameError:未初始化的常量

    我有一个这样的文件夹结构 app models bar foo rb connection rb foo rb connection rb是一个用于连接到另一个数据库的 抽象类 所以 class Bar Connection lt Acti
  • Scala 中的模式匹配是如何在字节码级别实现的?

    Scala 中的模式匹配是如何在字节码级别实现的 是不是像一系列if x instanceof Foo 构造 还是其他什么 它对性能有何影响 例如 给出以下代码 来自Scala 示例 http www scala lang org docu
  • 如何使用 Nokogiri 漂亮地打印 HTML?

    我用 Ruby 编写了一个网络爬虫 并且正在使用Nokogiri HTML来解析页面 我需要打印该页面 在 IRB 中闲逛时 我注意到一个pretty print方法 然而它需要一个参数 我不知道它想要什么 我的爬虫正在缓存网页的 HTML
  • 在高负载站点中使用 PHP 的策略

    在你回答这个问题之前 我从未开发过任何足够流行的东西来达到高服务器负载 把我当作 叹气 一个刚刚登陆地球的外星人 尽管我了解 PHP 和一些优化技术 我正在开发一个工具PHP如果效果好的话 可以吸引相当多的用户 然而 虽然我完全有能力开发该
  • 学习树顶

    我正在尝试自学 Ruby 的 Treetop 语法生成器 我发现 对于 最好的 文档来说 不仅文档非常稀疏 而且它的工作方式似乎并不像我希望的那样直观 从高层次上来说 我真的很喜欢比现场文档或视频更好的教程 如果有的话 在较低的层面上 这是
  • YAML 每个缩进有多少个空格?

    如果我在每个缩进级别使用一个空格 两个或四个空格 有什么区别吗 YAML 每个结构类型的空间数量有什么具体规则吗 例如4嵌套空间maps 1每空间项目清单 etc 我正在为 elastic beanstalk ebextensions 编写
  • 不使用 RVM 时的 Cron +

    我使用的是RVM环境 RUby 版本 2 1 2 导轨 4 1 1 schedule rb every 1 minute do runner note send mail end I used whenever update crontab
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • .NET 程序集大小会影响性能吗?

    net 程序集的大小是否会影响性能 您的 Windows 窗体 Web 窗体项目中的程序集数量如何 来自微软的模式和实践提高 NET 应用程序性能和可扩展性 http msdn microsoft com en us library ms9

随机推荐