问题标签 [premature-optimization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
20 回答
16666 浏览

optimization - 什么时候优化还为时过早?

正如高德纳所说,

我们应该忘记小的效率,比如大约 97% 的时间:过早优化是万恶之源。

这是 Stack Overflow 对“哪个是最有效的循环机制”、“SQL 优化技术?”等问题的回答中经常出现的问题。(等等)。这些优化提示问题的标准答案是分析您的代码并首先查看它是否有问题,如果不是,则不需要您的新技术。

我的问题是,如果一种特定的技术不同但不是特别模糊或混淆,那真的可以被认为是过早的优化吗?

这是 Randall Hyde 的一篇相关文章,名为The Fallacy of Premature Optimization

0 投票
4 回答
511 浏览

c# - 在 .Net 中创建局部变量

我只想知道创建局部变量来接受函数的返回值会影响 .Net 应用程序中的内存使用或性能,尤其是在 ASP.Net 中。

或者

我应该使用

当然,前一种用法具有更好的可读性。但是内存使用和性能呢?

在此先感谢 123Developer

0 投票
13 回答
1381 浏览

c++ - 重新安排条件评估会加速循环吗?

有点奇怪:一位朋友不久前告诉我,重新排列这个示例for循环:

到:

会略微提高 C++ 的性能。我看不出将常量值与变量进行比较比反之亦然更快,而且我运行的一些基本测试没有显示两种实现之间的速度有任何差异。测试这个 Pythonwhile循环也是如此:

与:

我错了吗?我的简单测试不足以确定速度变化吗?其他语言也是这样吗?或者这只是一个新的最佳实践?

0 投票
4 回答
1298 浏览

c# - 哪段代码性能更高?

我有一些我正在审查的代码,用于将一些文本转换为MD5 Hash. 效果很好。MD5Hhash它用于为gravatar 头像创建一个。这里是 :-

注意我们是如何MD5CryptoServiceProvider在第一次调用这个方法时创建的?(为了简单起见,这里不用担心比赛条件)。

我想知道,如果我将用于创建提供程序的行更改为这个...

现在,如何使用/使用这种方法?好吧,假设它是 StackOverflow 的主页 -> 为每个帖子生成用户的 md5 哈希,这样我们就可以生成他们的 gravatar url。所以视图可以调用这个方法几十次。

不要试图浪费太多时间来强调过早的优化等......哪个会更好?

0 投票
6 回答
14779 浏览

java - Java foreach 效率

我有这样的事情:

所以在foreach 循环myMap.keySet()中被调用一次?我认为是,但想听听你的意见。

我想知道以这种方式使用 foreach ( myMap.keySet()) 是否会对性能产生影响,或者它相当于:

0 投票
5 回答
171 浏览

optimization - 就当今的技术而言,这些对数据大小的关注有意义吗?

我们正在向现有数据库记录添加额外的登录信息,每次登录大约 3.85KB。

对此有两个担忧:

1) 每次登录是否添加了太多的在线数据?

2) 每次登录时我们在数据库中存储的额外数据是否过多?

鉴于当今的技术,这些担忧是否有效?

背景:

我们没有具体的使用数据,但我们平均每月约有 5,000 次登录。我们希望扩展到更大的客户,但是,仍然是每月 1000 个,而不是每秒 1000 个。

在美国(我们的市场),宽带有 60% 的市场采用率。

0 投票
4 回答
2771 浏览

php - 通过引用函数传递字符串会加快速度吗?(php)

可能重复:
在 PHP (>= 5.0) 中,通过引用传递是否更快?

我想知道如果通过引用传递参数声明,PHP 解释器是否会更快,因为不必将字符串复制到函数的本地范围?该脚本将 XML 文件转换为具有数千条记录的 CSV,因此优化时间很少。

这会:

比这更快:

?

0 投票
8 回答
18711 浏览

java - 调用 array.length 的成本是多少

在我们的应用程序中将 for 循环更新为 for-each 循环时,我遇到了很多这样的“模式”:

代替

我可以看到您获得了集合的性能,因为您不需要在每个循环中调用size()方法。但是用数组??

那么问题来了:array.length比常规变量更昂贵吗?

0 投票
2 回答
803 浏览

sql - 关于连接性能与系统非规范化的任何好的文献?

作为这个问题的必然结果,我想知道是否有很好的比较研究,我可以咨询并传递关于使用 RDMBS 进行连接优化与系统非规范化以便始终一次访问单个表的优势。

具体来说,我想了解以下信息:

  • 性能或规范化与非规范化。
  • 规范化与非规范化系统的可扩展性。
  • 非规范化的可维护性问题。
  • 非规范化的模型一致性问题。

有点历史,看看我要去哪里:我们的系统使用内部数据库抽象层,但它很旧,不能处理多个表。因此,所有复杂对象都必须在每个相关表上使用多个查询来实例化。现在,为了确保系统始终使用单个表,在整个表中都使用了大量的系统非规范化,有时会压平两到三层深度。至于 nn 关系,他们似乎已经通过精心设计他们的数据模型来解决它,以避免这种关系,并且总是退回到 1-n 或 n-1。

最终结果是一个错综复杂的系统,客户经常抱怨性能。在分析这样的瓶颈时,他们从不质疑系统所基于的这些基本前提,并且总是寻找其他解决方案。

我错过了什么 ?我认为整个想法是错误的,但不知何故缺乏无可辩驳的证据来证明(或反驳)它,这就是我求助于你们的集体智慧来指引我走向好的、被广泛接受的文学作品,这些文学作品可以说服我团队中的其他成员方法是错误的(让我相信我对一致的数据模型过于偏执和教条)。

我的下一步是建立自己的测试平台并收集结果,因为我讨厌重新发明轮子,我想知道这个主题已经有了什么。

---- 编辑注释:该系统最初是用平面文件构建的,没有数据库系统......只是后来它被移植到数据库,因为客户坚持使用 Oracle 的系统。他们没有重构,只是简单地为现有系统添加了对关系数据库的支持。平面文件支持后来被删除,但我们仍在等待重构以利用数据库。

0 投票
3 回答
11881 浏览

algorithm - 在现代 CPU 上,二分查找比线性查找快多少?

由于分支预测的奇妙之处,二分查找比通过整数数组的线性查找要慢。在一个典型的桌面处理器上,该数组必须有多大才能更好地使用二分搜索?假设该结构将用于许多查找。