方法提取会对代码性能产生负面影响吗?

2024-01-06

假设你有一个很长的方法,大约有 200 行对时间非常敏感代码。将代码的某些部分提取到单独的方法中是否可能会减慢执行速度?


最有可能的是,你会得到加速。问题是优化 200 行的野兽是很困难的。实际上,当方法太长时,Hotspot就会放弃它。有一次,我通过简单地拆分一个长方法,实现了 2 倍的加速系数。

简短的方法很好,并且它们将根据需要内联。因此方法调用的开销被最小化。通过内联,Hotspot 可能会重新创建原始方法(由于其长度过大而不太可能)或创建多个方法,其中某些方法可能包含原始方法中不存在的代码。

答案是“是的,它可能会变慢”。问题是所选择的内联可能不是最佳的。然而,这是非常不可能的,我预计会加速。

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

方法提取会对代码性能产生负面影响吗? 的相关文章

随机推荐

  • Matplotlib.pyplot:如何为现有绘图设置第二个 y 轴

    我有两组线性相关的值 因此 我只需要一个带有第二个 y 轴且比例正确的图表 最优雅的方法是什么 只制作两个条形图就会产生重叠 import numpy as np import matplotlib pyplot as plt x np a
  • 正则表达式匹配 CSS 中任何“未使用”的规则(类、id 等)

    我有一个巨大的 CSS 文件 我想将其缩减为仅使用的 CSS 规则 我通过使用做到了这一点CSS 使用插件 https addons mozilla org en US firefox addon css usage 对于萤火虫 它为每个未
  • Android NDK OpenGL 应用程序的浮点还是定点?

    我正在尝试决定是否对我的应用程序 大部分是 C 中的所有 3D 相关元素主要使用浮点数还是整数 据我所知 大多数基于 ARM 的设备没有硬件浮点支持 因此我认为任何使用浮点的繁重工作都会明显变慢 然而 我计划在大部分情况下准备所有数据 即在
  • TeamCity LocalService PFX 程序集签名 - 在何处安装证书

    我一直在研究这个问题 虽然我找到了一些 解决方案 但似乎很多 解决方案 都是偶然发现的 或者无法充分解释真正有效的方法 我已经尝试了多种解决方案 但仍然遇到问题 我在 Visual Studio 中创建了一个 PFX TeamCity 和
  • Facebook 延迟深度链接在 iOS 上是否有效?如何在应用商店发布应用程序之前对其进行测试?

    我在 iOS 上遇到 Facebook 延迟深度链接问题 深层链接有效 但延迟深层链接不起作用 我已经阅读了很多关于这个问题的内容 但仍然找不到解决方案 我已经设置了深层链接并且有效 当我也尝试测试深度链接时应用广告助手 https dev
  • 在 Sequelize Model.create 上设置 raw = true

    我希望能够在调用后接收普通的原始对象Model create在 Sequelize 上 创建的对象本身 没有元数据或任何其他东西 就像 raw true 选项中Model find 我已经看过这个答案 将所有查询设置为 raw true S
  • 在 NetworkX 中同时创建属性和边(如果存在相同的属性)

    在 NetworkX 中创建节点后 如果两个节点 至少 具有一个重叠的相同属性 我想在节点之间添加边 这似乎是一个问题 并非所有节点都包含相同数量的属性 可能是这种情况 如果是 我应该如何解决 import networkx as nx f
  • Java 获取默认 UI 颜色

    例如 我如何找到 JList 中的默认选择颜色 这些颜色存储在哪里 对于 Swing 组件 您可以在应用程序范围内获取和设置默认颜色UIDefaults http download oracle com javase 6 docs api
  • 刷新令牌如何比长期存在的 JWT 更安全?

    在将 JWT 与自然不安全的客户端 浏览器 手机等 一起使用时 我很难理解刷新令牌的使用 对我来说 如果 JWT 被泄露 那么刷新令牌也不会被泄露 这种想法似乎很天真 只要刷新令牌保持有效 攻击者本质上就拥有无限的 JWT 来源 即使您使使
  • Sql 密码生成器 - 8 个字符,大写和小写,包括数字 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要在 SQL 中创建一个新密码
  • 类声明与构造函数内初始化对象的区别

    我正在为我的对象进行对象初始化和构造函数初始化 但无法得到我的问题的准确答复 这里Case1和Case2有什么区别 Case 1 namespace ConsoleApplication2 class MyBuilder private M
  • 覆盖我的可观察变量会杀死当前订阅者吗?

    我希望能够缓存 http 调用 但也强制刷新缓存 我的服务如下所示 Injectable export class UserService private currentUser Observable
  • 如何在 python 多处理中创建共享的二维数组

    我需要使用 python 的多重处理来处理一个大矩阵 这就是说我需要二维数组 该数组应该由不同的子进程以同步方式共享 访问 更新 因此我使用mp Manager 在创建数组时 multiprocess Array 让我创建一个一维数组 我尝
  • .NET 的自然语言日期/时间解析器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 NET 日期 时间解析器类似于Ruby 的慢性病 http chronic rubyforg
  • 如何禁用 UIButton?

    我正在开发一个项目 其中我必须在 plist 中显示照片库的所有照片 并在UIButtons 我的应用程序还将有一个编辑按钮 当用户单击此按钮时 每个按钮上应显示删除标记 例如通常出现在其他 iPhone iPad 应用程序中 但关键的是
  • 如何将 put 的输出作为输入提供给过程?

    我有一个将列表打印为格式化表格的过程 它有像 print table temp 这样的用例 我如何给出不同过程的输出 其中我使用 puts 命令打印输出作为该过程 print table 的输入 set list1 abc 1 defg 2
  • CoreData ManagedObjectContext 递归保存错误

    我的一些用户在执行保存时遇到 CoreData 错误 我无法在网上找到有关此错误或如何符号化堆栈跟踪的任何信息 错误信息是attempt to recursively call save on the context aborted sta
  • 如何在keras中记录val_loss和每批次的损失

    我正在使用keras中的回调函数来记录loss and val loss每个纪元 但我想按批次做同样的事情 我发现了一个回调函数on batch begin self batch log 但我不知道如何使用它 这是自定义回调的示例 遵循并修
  • 无法打开输入文件

    我正在编写一个基本程序 它将从文本文件中读取整数列表 并将文件中的最小整数和最大整数输出到屏幕 我确保文本文件与源代码文件位于同一文件夹中 并且文件的名称与我在代码中调用的名称相同 无论如何 程序都无法打开该文件 我怎样才能解决这个问题 这
  • 方法提取会对代码性能产生负面影响吗?

    假设你有一个很长的方法 大约有 200 行对时间非常敏感代码 将代码的某些部分提取到单独的方法中是否可能会减慢执行速度 最有可能的是 你会得到加速 问题是优化 200 行的野兽是很困难的 实际上 当方法太长时 Hotspot就会放弃它 有一