问题标签 [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.
c# - Take(10) vs TOP 10 使用 SqlDataReader?
我有一个使用 SqlDataReader 读取数据的方法,yield 返回一个 IEnumerable,例如:
现在假设我只需要最新的 10 个客户。我可以
或将 10 作为参数传递给 sql 并制作我的 sql
根据这篇文章,即使数据读取器只读取几行(只要连接打开),整个结果集也会从 sql server 传输到客户端 - 我是否应该避免这种Take(10)
方法,因为无论如何都会将额外的数据传输到客户端或者避免它会是一个过早的优化(因为在读取 10 行之后,yield 返回代码会关闭连接,然后数据传输无论如何都会停止)?
regex - perl 字符串连接和替换在一行中?
我需要修改一个包含文件路径的 perl 变量;它需要以正斜杠 (/) 开始和结束,并将多个正斜杠的所有实例缩减为单个斜杠。
(这是因为现有进程不强制执行一致的配置语法,因此有数百个配置文件分散在各处,在文件名和路径名的正确位置可能有也可能没有斜杠。)
像这样的东西:
但这对我来说不是最佳的或特别可读的;我宁愿有一个更优雅的表达方式(如果它最终使用不寻常的正则表达式,我将使用注释使其更清晰。)
输入和输出示例
home/datamonster//c2counts
变成/home/datamonster/c2counts/
home/////teledyne/tmp/
变成/home/teledyne/tmp/
并且/var/backup/DOC/all_instruments/
将通过不变
gson - 生产中的新 Gson() 构造函数有多贵?
我正在创建一个新的 Netty 管道,我正在尝试:
- 避免过早优化。
- 编写易于向我的一位实习生解释的代码。
这种工厂方法当然很容易解释:
在一个有点相关的问题中,OP 询问是否可以(意味着线程安全)重用 Gson 对象的单个实例。我的问题略有不同:是否有充分的理由分享对象?如果是这样,在什么复杂程度下共享 Gson 对象是值得的?权衡在哪里?
c++ - C++:if inside 循环的性能影响
我需要迭代大量(2D)数据,并且有时只处理特殊情况。对于我来说,应用速度是最关键的因素。
(我)很快想到的选项是:
选项 A:
- 更具可读性
- 由于循环内的比较而导致性能下降?
选项 B:
- 代码重复
选项 C:
- 模板
- 丑陋的打电话
- 基本和B一样?
我知道这属于过早的 Optimization。但是,从理论的角度来看,我会对使用-O3
(GCC / Clang)编译时这些片段在生成的程序集和速度方面的差异感兴趣。
(Perl 中已经存在一个类似的问题,但我想具体了解 C++。)
(编辑)specialCase
在编译时已知吗?
并不真地。调用本身在另一个循环中,并且某些迭代的处理方式不同。所以类似(但不一定等距但独立于用户输入):
我将如何在这里使用选项 C?引入一个额外的 if,因此我希望它与 B 非常相似。
java - 从 GC 角度看 Java 流的影响或 GC 处理短期对象
网上有一些文章提到了使用Stream
-s 而不是旧的loop
-s 的一些缺点:
- https://blog.jooq.org/2015/12/08/3-reasons-why-you-shouldnt-replace-your-for-loops-by-stream-foreach/
- https://jaxenter.com/java-performance-tutorial-how-fast-are-the-java-8-streams-118830.html
但是从 GC 的角度来看有什么影响吗?正如我所假设的(正确吗?),每个流调用都会在下面创建一些短暂的对象。如果底层系统频繁调用使用流的特定代码片段,最终是否会从 GC 角度导致一些性能问题或给 GC 带来额外压力?还是影响很小,大部分时间都可以忽略?
有没有更详细的文章?
c++ - 对象动态常数
我现在正面临我的设计问题。我正在处理主服务器和半从客户端的情况。我有服务器,实际上可以做任何它想做的事情。(让我们不要解构网络层,因为它已经可以很好地满足我自己的需要了。)
我尝试使用对象池设计模式,并且我有基础对象——我们称之为对象ManagedObject
,因为它是对象的基础类型。存储应用程序运行所需的ManagedObject
所有必要数据/信息。我有自己的系统,可以同步客户端和服务器内部的存储状态,所以它也能正常工作。
好吧,在对我的问题进行了很长时间的介绍之后:
问题是我Server
可以看到并且可以编辑它拥有的数据(对于客户端也是如此)。我希望以完全相同的方式保存和使用一种类型,假设以下代码:
在这种情况下,我们有基础布局类,其中包含some::other::ManagedObject
. 我个人很想在运行时动态地使这个变量为 const 或不,但我只知道它不能那样工作(也不应该)。
我曾考虑过创建统一的接口来访问它,但这也是不可能的,因为接口必须声明它的类型,所以我能得到的最好的结果是:
这对我的情况并没有太大帮助,因为这是两种方法,用户必须知道该做什么以及何时不只是直接复制同一对象的大量副本。此外,我必须观察对象是否已更改,并将更新发送到其他实例。
我的最后一次也是目前的尝试是默认复制所有内容,并创建“事务”机制,如果有commit()
方法,它只会验证是否可能(允许)。
这是一个问题:
我如何设计我的代码以避免copy by default
接近,并使其作为整个系统更好/更有效。
注释:
我知道这是过早的优化,但我希望系统的这一部分能够顺利运行,因为它将成为我的游戏类项目的主动脉。
c - 变量和性能范围窄?
我有一个main
方法看起来像这样。
我的问题是,即使我已经标记premature-optimization
了int *d
变量。
一旦退出循环并重用它会更好地声明变量吗?
reactjs - 有没有使用 React.memo/PureComponent 比不使用它的性能更差的例子?
我在讨论和文章(其中许多来自 React 的开发人员)中看到很多次提到React.memo
或PureComponent
带有性能开销,并且应该仅在实际测量性能后应用。
但是,正如在这个答案React.memo
中所看到的那样,认为对 props 进行浅层比较的开销可能超过深度 VDOM 比较的成本是违反直觉的,而且如果没有一个具体的例子来实际显示orPureComponent
的情况,似乎很难反驳确实比较慢。
但是,在花了整整一个晚上寻找有关此主题的更多信息之后,我还没有找到这样的示例。
是不是因为这样的例子构造起来不那么简单?或者它是如此微不足道,以至于在大多数情况下都可以观察到性能损失(所以没有必要为了展示这种效果而编写一些示例代码)?