什么时候优化为时过早? [关闭]

2023-12-06

我看到这个词用得很多,但我觉得大多数人使用它是出于懒惰或无知。例如,我正在读这篇文章:

http://blogs.msdn.com/b/ricom/archive/2006/09/07/745085.aspx

他在其中谈到了他为实现应用程序所需的类型而做出的决定。

如果是我,在我们需要编写的代码中谈论这些,其他程序员可能会认为:

  1. 当什么都没有的时候,我想得太多,因此过早地优化。
  2. 在没有遇到速度减慢或性能问题的情况下,过度考虑无关紧要的细节。

or both.

并建议只实施它,不要担心这些,直到它们成为问题。

哪个更优惠?

在完成任何实施之前,如何区分性能关键型应用程序的过早优化与明智决策?


如果出现以下情况,优化就为时过早:

  1. 您的应用程序没有执行任何对时间要求严格的操作。 (这意味着,如果您正在编写一个将文件中的 500 个数字相加的程序,那么“优化”这个词根本不应该出现在您的大脑中,因为它只会浪费您的时间。)

  2. 您正在做一些除装配之外的时间紧迫的事情,并且仍然担心是否i++; i++;更快或i += 2... 如果它是really至关重要的是,您将在装配中工作,而不是浪费时间担心这个。 (即便如此,这个特定的例子很可能并不重要。)

  3. 你有一个hunch一件事可能比另一件事快一点,但你需要查一下。例如,如果有什么事情困扰着你是否StopWatch更快或Environment.TickCount,这是不成熟的优化,因为如果差异更大,您可能会更加确定并且不需要查找它。

如果您猜测某件事可能会很慢但又不太确定,只需输入//NOTE: Performance?注释,如果以后遇到瓶颈,请检查代码中的此类位置。我个人并不担心不太明显的优化;如果需要的话,我稍后会使用分析器。

另一种技术:

我只是运行我的程序,用调试器随机中断它,然后查看它在哪里停止——无论它停止在哪里,都可能是瓶颈,而且停在那里的次数越多,瓶颈就越严重。它的作用几乎就像魔术一样。 :)

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

什么时候优化为时过早? [关闭] 的相关文章

  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • ICSharpCode.Decompiler + Mono.Cecil -> 如何为单个方法生成代码?

    我可以使用 Mono Cecil 和 ICSharpCode Decompiler 生成类型或程序集的代码 但是 如果我尝试为单个方法生成代码 我将收到错误 对象引用未设置为对象的实例 你们能给我任何关于这个的提示吗 提前感谢您的所有帮助
  • Image.FromStream() 方法返回 Invalid Argument 异常

    我正在从智能相机成像器捕获图像 并通过套接字编程从相机接收字节数组 NET 应用程序是客户端 相机是服务器 问题是我在运行时收到 System InvalidArgument 异常 private Image byteArrayToImag
  • 不使用 DAO 压缩 Microsoft Access 数据库

    我用CDatabase类开一个ACCDB访问数据库 司机是 T Microsoft Access Driver mdb accdb 我可以打开并使用数据库 已经这样做很多年了 if DatabaseExist m strMDBPath AJ
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • 使用 itextSharp 5.3.3 对 Pdf 文档进行数字签名和验证

    我正在尝试使用 iTextSharp 5 3 3 在服务器 c 上进行数字签名和验证 pdf 文档 我使用 DigiSign 在线工具 生成了 Pfx 文件 然后使用 Windows 生成证书 cer 文件
  • CAS(代码访问安全)的目的是什么?

    我参与过很多 Web 应用程序 但从未使用过 CAS 也许也从未觉得有必要使用它 什么时候需要使用CAS 人们真的在他们的应用程序中使用它吗 CAS 实际上只在桌面应用程序中有用 可以这么说 在桌面应用程序中 您想要限制通过网络 例如 运行
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 如何声明返回相同类型的 Func Delegate 的 Func Delegate?

    我想编写一个方法 该方法可以完成一些工作 并最终返回另一个与原始方法具有相同签名的方法 这个想法是根据前一个字节值顺序处理字节流 而不进行递归 通过这样调用它 MyDelegate executeMethod handleFirstByte
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 在 C++ 中运行 python [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个用 C 编写的应用程序和一个测试系统 也是用 C 编写的 测试系统非常复杂并且很难改变 我只想做一些小的改变 我的班级是这样的
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 代表和结构的速度问题

    我遇到了一些与结构和委托有关的速度问题 采用以下控制台应用程序代码 public delegate string StringGetter public class LocalString public LocalString string
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 如何从 Windows 10 卸载 .net Framework 4.8

    我安装了 Windows 10 和 net Framework 4 7 2 并且我的程序运行良好 然后我想尝试一下 net Framework 4 8 安装后 我的程序无法运行 我试图卸载 net Framework 4 8 我从控制面板进
  • 我的 C 程序无法运行,并显示“无法执行二进制文件:Exec 格式错误”

    我刚刚从 C 开始 我试图编译下面的代码并执行它 但出现错误 也在运行sizeBS 或数据堆栈中没有显示任何内容 include
  • GCC编译非常慢(文件大)

    我正在尝试编译一个大的 C 文件 专门用于 MATLAB mexing C 文件大约 20 MB 可用来自 GCC 错误跟踪器 https gcc gnu org bugzilla attachment cgi id 36632如果你想玩一
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • 具有奇怪路径的 TopoJSON

    我在 WGS84 中有一个 ESRI shapefile 并将其转换为另一个具有欧洲阿尔伯斯投影 EPSG 102013 的形状文件ogr2ogr ogr2ogr f ESRI Shapefile t srs EPSG 102013 eur
  • 使用 tmap 在形状上弹出

    我用它制作了一张地图tmap包含在一个闪亮的应用程序中使用leaflet 我大致有了我想要的 一个基于 SpatialPolygonsDataFrame 的填充颜色的专题地图 当您单击地图时 会弹出一个包含有关多边形的额外信息的弹出窗口 我
  • 如何在MVVM架构android中的cloud firestore实时更新中包含Source Cache

    在我的应用程序中 我使用 android MVVM 架构 因此为了从云 firestore 检索数据 我使用层 因此我创建了另一个类 Firebase查询实时数据 用于从 firestore 获取结果 因此 通过我的代码 我可以获得实时更新
  • 用于填充 MS Access 中的超链接列的 SQL

    我想 SQL 必须传递 2 个值 即表中显示的值和该值导航到的链接 我希望能有一个指向 SQL 脚本的指针来实现这一点 谢谢 超链接列 字段 的格式为 描述 地址 例如 This is StackOverflow http stackove
  • 在 Windows 任务计划程序中创建/修改任务所需的权限

    我需要从 ASP NET Web 应用程序在 Windows Server 2003 上的 Windows 任务计划程序中创建和修改任务 Web 应用程序运行所在的网络服务无法进行更改 它会出现 System UnauthorizedAcc
  • 数组包含 Google 地图绘图管理器中多边形的纬度和经度

    这是在 Google 地图上添加绘图管理器以供用户绘制多边形 圆形 矩形等的最简单方法 code
  • guzzle ver 6 post 方法不起作用

    正在邮递员中工作 带有 application json 类型的原始格式数据 与guzzle6 url http vm xxxxx com v1 hirejob company name company name last date app
  • 玩:如何在生产代码中创建虚假请求

    FakeRequest来自神器play test并且仅在测试范围内添加到项目中 但我需要创建一种假请求只是为了调用采用隐式方法的方法RequestHeader import play api test implicit val reques
  • 注释属性 Min.value 的值必须是常量表达式

    Eclipse 不断给我错误 The value for annotation attribute Min value must be a constant expression 但我绝对会给注释一个常量 private static fi
  • 我的 R.java 文件中的错误无法解决

    我正在使用 Eclipse ADT 捆绑包 最近更新了我的 Android SDK 工具和 Android SDK 平台工具 然后我尝试创建一个新项目 但我的 R java 文件中不断出现错误 这似乎微不足道 但我仍然不明白它是如何保持的显
  • HTML div 高度在窗口调整大小事件中不断增长

    我有简单的 Three js 场景 画布 我想在窗口调整大小事件时做出响应 特别是屏幕宽度的变化 保持高度恒定 在正常情况下我使用window innerWidth window innerHeight属性设置画布的大小以匹配窗口大小 不过
  • 如何计算随机森林的OOB?

    我正在比较一些模型以获得最佳模型 现在 我想要获得随机森林模型的 OOB 误差 以将其与其他一些模型的交叉验证误差进行比较 我可以做一下比较吗 如果可以的话 如何通过 R 代码获取 OOB 错误 要获取 R 中随机森林模型的 OOB 您可以
  • 无法将网络摄像头视频路由到 Linux 上的虚拟视频设备(通过 OpenCV)

    我想通过 OpenCV 将视频叠加到传入的网络摄像头流上 作为第一步 我尝试从网络摄像头传输传入的视频 dev video0到虚拟视频设备 dev video1 v4l2环回 不幸的是 我无法将网络摄像头流转发到 v4l2loopback
  • 如何自动将合约程序集包含在 nupkg 中?

    我刚刚开始使用 nuget 为我们公司的内部库创建一些包 该库由许多程序集组成 其中许多具有从代码合同生成的合同引用程序集 我用的是最简单的nuget pack方法 就是传入csproj文件路径 让它解析项目之间的所有依赖关系 问题是它不包
  • WPF:“ApplicationCommands.New”在 MenuItem 的情况下显示不正确的源

    我是 WPF 新手 正在查看 net 4 5 中的 Professional WPF 示例 在命令章节中 有一个示例 多个控件可以发送相同的命令 我使用按钮 复选框和菜单项来触发 新建 命令 我面临的问题是 如果第一次按下 MenuItem
  • 从 javascript 对象数组中删除一些属性

    我想从 javascript 对象数组中删除一些属性 这是对象数组 obj array DATA ID 1 DATA NAME Jim DATA BB TYP 2 DATA MAC 5474 DATA ID 3 DATA NAME Fro
  • 如何使用默认 R 安装通过 conda 安装 rpy2

    我在 Ubuntu Linux 上使用 Anaconda Python 发行版 并希望在 IPython 笔记本中使用 R 魔法 有没有办法使用 conda 发行版安装 rpy2 并使用我当前在 usr bin R 的默认 R 安装 我的目
  • codeigniter 在 find_in_set 中添加 IS NULL

    通过生成查询时代码点火器框架 this gt db gt select id memo sent to sent by read by date gt from memos gt where FIND IN SET 1 sent to gt
  • Zxing有时会从条形码中获取错误的数据

    我知道这可能是一个相当简单的问题 我们还可以设置 Zxing 扫描的条形码格式 如下所示 1 intent putExtra SCAN MODE QR CODE MODE or any other format 如果我们这样做 2 inte
  • 什么时候优化为时过早? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我看到这个词用得很多 但我