问题标签 [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 - 中型内存分配的合适大小是多少?
对于序列化系统,我需要分配缓冲区来写入数据。所需的大小事先不知道,因此基本模式是malloc
N
字节并realloc
在需要时使用。的大小N
足以容纳大多数对象,因此很少进行重新分配。
这使我认为可能存在malloc
比其他字节更容易满足的最佳初始字节数。我猜在靠近 的某个地方pagesize
,但不一定完全malloc
需要一些房间来做家务。
现在,我确信这是一个无用的优化,如果它真的很重要,我可以使用一个池,但我很好奇;我不能成为第一个认为给我最容易分配的字节块作为开始的程序员。有没有办法确定这一点?
任何专门适用于现代 GCC/G++ 和/或 linux 的答案都将被接受。
python - Python中导入模块的优化
我正在阅读 David Beazley 的 Python 参考书,他提出了一个观点:
例如,如果您执行大量平方根运算,使用“from math import sqrt”和“sqrt(x)”比输入“math.sqrt(x)”更快。
和:
对于涉及大量使用方法或模块查找的计算,通过首先将要执行的操作放入局部变量来消除属性查找几乎总是更好。
我决定尝试一下:
第一的()
第二()
结果是:
诸如此类的优化对我来说可能并不重要。但我很好奇为什么与 Beazley 所写的相反的是真实的。请注意,有 1 秒的差异,鉴于任务微不足道,这很重要。
为什么会这样?
更新:
我得到的时间如下:
php - IF 语句:什么更有效?许多小的,还是几个大的?
我的食谱应用程序有表格,可将配料插入数据库。如果尚未提交任何内容,则营养值显示为“0”。否则,它们会更新为帖子值。
我的营养展示结构是:
...并继续进行大约 20 项。问题是:
仅使用 1 个 if/else 语句来重构代码以显示 2 种不同的形式(动态和静态)会更有效,还是按原样更好?
objective-c - 拥有许多objective-c类别有缺点吗?
我们有一些 Objective-c 类别的代码,我们希望在项目之间共享。我们可以采取(至少)两种方法:
- 将它们放在每个班级的一个类别中,称为
UIView+SGBExtensions
- 然后按用途将其放入许多不同的类别中,例如
UIView+SGBLayout
,UIView+SGBDrawing
等。
我的直觉是选择后者,因为它更具描述性,我们可以挑选。但是,我们的大多数应用程序都将包含大部分共享代码,因此我有点担心拥有大量类别可能会影响性能或应用程序大小。拥有许多objective-c类别有缺点吗?
jquery - 在切换其可见性之前检查 DOM 元素的可见性是否值得?或者这是过早的优化?
请考虑以下 jQuery 代码:
我的问题:
- 在发出 show() 命令之前检查元素的可见性是否值得?
- 即 DOM 写入是否比 DOM 读取更昂贵,这种模式是否包括小的性能优化?
- 或者是没有实用程序的可见性检查,简单地,无条件地发出 show() 命令会是更简洁的代码吗?
c++ - Why swap doesn't use Xor operation in C++
I've learned that Xor operation can be used to implement effective swap function. like this:
But the implementation of swap all i can found on the internet is essentially like this:
It seems that the compiler didn't generate the same code for the two form above because I tested it on VC++ 2010 and the first one is done the job more quickly than std::swap
. Is there portable or any other problem with first one? Feel free to correct any of my mistake cause i'm not an English native and not good at C++.
(Editor's note: likely that test was done with a non-optimized debug build, not a release build where std::swap
could inline. Benchmarking debug builds is meaningless. Compilers generally don't optimize away xor-swap into something more efficient.)
python - 在 Python 中,有没有办法在可迭代的每个项目上调用方法?
可能重复:
在 python 中是否有没有结果的地图?
当我想快速/有效地对可迭代对象包含的每个项目调用就地方法时,我经常在程序中遇到这种情况。(很快意味着 for 循环的开销是不可接受的)。当我想调用draw()
每个Sprite
对象时,一个很好的例子就是一个精灵列表。
我知道我可以做这样的事情:
[sprite.draw() for sprite in sprite_list]
但我觉得列表理解被滥用了,因为我没有使用返回的列表。函数也是如此map
。让我过早优化,但我也不想要返回值的开销。
我想知道的是Python中是否有一种方法可以让我做我刚才解释的事情,也许就像我在下面建议的假设函数:
do_all(sprite_list, draw)
java - x > -1 vs x >= 0,是否存在性能差异
我曾经听过一位老师放弃了这个,从那以后它就一直困扰着我。假设我们要检查整数x
是否大于或等于 0。有两种方法可以检查:
和
按照这位老师的说法>
会稍微快一点>=
。在这种情况下是 Java,但据他说,这也适用于 C、c++ 和其他语言。这个说法有道理吗?
java - 这个特定的内部非静态类是否有很大的开销?
我正在为学校作业编写我自己的双向链表实现,我使用了一个Node
在列表类内部调用的内部节点类,它表示相互链接的列表节点(通常是链表的情况)。
我想知道,对于具有许多节点的大型列表,由于每个Node
对象都可能引用父列表类的一个实例,这是一个显着的开销和次优设计吗?作为一个非静态类肯定很方便——然后节点可能会改变父列表first
和last
引用,我发现它们非常适合封装。
如果我Node
设为静态,它就不能再(没有对列表的显式成员引用)用于操作父列表first
,last
并且我必须从其他方式处理它 - 列表将通过自己的方法分配和操作节点,也就是将它们相互链接,取消链接并自然调整其first
和last
值。
为了良好的设计和学习,我想知道The Smart Thing To Do (c)(如果有的话)是什么?
c - 为什么人们不使用异或交换?
我在一个网站上读到,使用异或交换速度很快,因为它不使用临时变量。这是一个例子:
为什么人们不在现实生活中的代码中使用这种技术?只是风格差吗?有什么没有明确定义的吗?我的编译器可能会自动从更清晰的代码中产生优化吗?