问题标签 [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 投票
2 回答
127 浏览

c# - 哪种语法具有更好的性能?

这种语法中哪一种在数据之间搜索时具有更好的性能和速度?

第一种选择:

第二种选择:

0 投票
6 回答
152 浏览

java - 额外的“如果检查”是否已经设置了值 - 什么更快,什么使用更多资源?

假设我们有一个给定的接口:

和以下实现:

此外,假设方法negate*Check()可以被调用 1 次以上,很难说调用次数的上限是多少。

  • 问题是根据执行速度、垃圾收集、内存分配等,两种实现中的哪种方法“更好” - negateWithCheck还是negateWithoutCheck

  • 答案是否取决于我们使用的两个提议的实现中的哪一个,或者无关紧要?

  • 答案是否取决于估计的呼叫次数?使用一种一种方法更好地计数多少?

0 投票
2 回答
32 浏览

javascript - 从对象中获取价值与从全局价值中获取价值

我知道这是过早的优化,但我只是想知道需要多长时间才能获得它的价值

VS

我只是不知道如何进行基准测试,所以如果我知道我会自己做,但如果这是一个非常糟糕的问题,请不要 - 代表我,告诉我,我会删除这个问题

0 投票
1 回答
449 浏览

javascript - 对象池的帧率更差

我正在开发一款游戏。而且我现在已经阅读了几篇文章,建议我应该重用对象而不是创建新对象以减少垃圾收集扫入并删除对象时的丢帧。

有关该主题的文章阅读:

  1. 高性能、垃圾收集器友好的代码
  2. 对象池
  3. 带有对象池的静态内存 Javascript

但是我没有得到我想要的结果。使用对象池比创建和销毁对象的帧速率更差。除了学习之外,我从中得到的一个好消息是,不使用对象池的测试偶尔会变得无响应并崩溃。

这是为什么?

为什么我没有得到与那些博客中的人相似的结果?



如果您认为这可以改进,请编辑。

0 投票
2 回答
168 浏览

optimization - 如何优化“if (A == B) { ...} else if (A < B) {...} else { ....}”形式的语句

我有一段代码就像

==我意识到存在冗余问题,因为在计算and时会有一些相同的位比较<。如何优化我的代码以使其更漂亮、更快?

0 投票
1 回答
2306 浏览

sqlite - SQLite 吸尘/碎片和性能下降

假设我定期将数据插入 SQLite 数据库,然后清除前 50% 的数据,但我不清理。

我现在对文件的前 50% 有类似归零的页面吗?如果我添加另一批数据,我会填写那些归零的页面吗?

手册中提到了数据的碎片化:

频繁的插入、更新和删除会导致数据库文件变得碎片化——单个表或索引的数据分散在数据库文件周围。

VACUUM 确保每个表和索引在很大程度上连续存储在数据库文件中。在某些情况下,VACUUM 还可以减少数据库中部分填充的页数,从而进一步减小数据库文件的大小。

但这并不表明这必然会导致性能下降。它主要暗示可以从吸尘器中节省的浪费空间。

严格连续页面中的数据是否有明显的性能提升?我可以期待一个包含大量碎片数据的数据库的“糟糕”性能吗?

0 投票
1 回答
478 浏览

sqlite - 在没有 VACUUM 的情况下以循环方式使用 SQLite 中的碎片

有一个 SQLite 数据库用于以循环方式存储静态大小的数据。

例如,存储 100 天的数据。在第 101 天,删除第 1 天,然后插入第 101 天。

不同天的行数相同。行中的各个字段都是整数(32 位或更少)和时间戳。

数据库存储在 I/O 速度较差的 SD 卡上,读取速度为 30 MB/s。

VACUUM 是不允许的,因为它可以引入几秒钟的等待,并且不允许该数据库的写入者等待写入访问。

所以问题是碎片化,因为我在没有 VACUUMing 的情况下不断地插入和删除记录。但是由于我每天都在删除/插入同一组行,数据会变得支离破碎吗? SQLite 是否在第 1 天的释放页面中拟合第 101 天的数据?

尽管行集是相同的,但整数可能是 1 字节天,然后是 4 字节。该数据库还有几个索引,我不确定它们存储在哪里,以及它们是否会干扰释放页面然后重新使用它们的完美模式。

(SQLite是唯一可以使用的技术。不能切换到TSDB/RRDtool等)

0 投票
3 回答
1214 浏览

c++ - 在 C++ 中,哪个更好 i>-1 或 i>=0

这可能是一个愚蠢的问题,但这种优化有时会提高应用程序的性能。在这里我专门询问 C++,因为 C++ 编译代码的方式与 c# 或 Java 有很大不同。

问题是,如果变量 i 是 int,那么哪一个表现更好。

  1. i > -1
  2. i >= 0

我正在寻找所需的内存块或寄存器以及两种条件所需的 CPU 周期方面的性能。

提前致谢。

0 投票
2 回答
80 浏览

java - 可能使用 Optional#ofNullable 创建冗余对象?

我很好奇Optional.

使用以下代码片段,

当我像这样更改代码时,

  • 问题1:是否ofNullable明显创建了一个冗余对象?
  • 问题 2:避免使用样板代码是否值得?
  • 问题3:这个问题是在谈论过早优化吗?
0 投票
2 回答
685 浏览

c - 在C中有效地取整数向量的绝对值

任务是将 C 整数数组的每个元素设置为其绝对值。我正在尝试尽可能有效地做到这一点。以下是我所做的一系列优化。请告诉我这些是否真的是优化,是否可以做更多!

该函数的第一个参数将是一个整数数组,第二个参数将是该数组的整数大小。

这是标准实现:

这足以满足任何介绍性编程课程的教授,但我想多玩一点,也许还能学到一些关于优化的东西。

基于https://stackoverflow.com/a/2074403,无分支绝对值:

基于与零的比较更有效,并且不需要额外的变量:

(这个矢量化了吗?)

这就是我所得到的。可以做更多的工作来优化这个功能吗?