问题标签 [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.
.net - 什么时候在 .Net 代码中手动实习字符串是个好主意?
参考在这里:http: //msdn.microsoft.com/en-us/library/system.string.intern.aspx
看起来这是由编译器自动完成的,但也可以手动完成。如果我错了,请纠正我并对此进行更多说明。语言是 C#、VB.Net、C++/CLI 还是其他语言是否重要?
谢谢。
c - 哪种位操作方法在 C 中更有效?
根据我得到的答案,我认为这个问题有点毫无意义。感谢您的所有友好回复!
我想得到一个二进制数,其最右边的 j 位设置为 1,其他设置为 0。基本上,有两种方法。我想知道他们中的哪一个更有效,或者有没有比这两个更有效的方法?
optimization - 为什么这个 Lua 优化技巧会提高性能?
我正在查看一个文档,该文档描述了提高 Lua脚本代码性能的各种技术,我对需要这些技巧感到震惊。(虽然我引用了 Lua,但我在 Javascript 中看到过类似的黑客攻击)。
为什么需要这种优化:
例如,代码
运行速度比这个慢 30%:
他们正在本地重新声明sin
功能。
为什么会有帮助?无论如何,这是编译器的工作。为什么程序员必须做编译器的工作?
我在 Javascript 中看到过类似的东西;所以很明显,解释编译器没有完成它的工作肯定有一个很好的理由。它是什么?
我在我正在摆弄的 Lua 环境中反复看到它;人们将变量重新声明为本地变量:
人们必须做编译器的工作是怎么回事?编译器是否对如何查找感到困惑format
?为什么这是程序员必须处理的问题?为什么这在 1993 年没有得到解决?
我似乎也遇到了一个逻辑悖论:
- 不应该在没有分析的情况下进行优化
- Lua 没有能力被剖析
- Lua 不应该被优化
java - 哪个“if”构造更快 - 语句或三元运算符?
java中有两种类型的if
语句 - 经典:if {} else {}
和速记:exp ? value1 : value2
。一个比另一个快还是它们相同?
陈述:
三元运算符:
java - 在 java 的 for 循环中,++i 真的比 i++ 快吗?
在java中,我通常会做一个如下的for循环:
但最近一位同事这样打字:
他说后者会更快。真的吗?
c# - 什么时候优化还为时过早?
我看到这个词用了很多,但我觉得大多数人使用它是出于懒惰或无知。例如,我正在阅读这篇文章:
http://blogs.msdn.com/b/ricom/archive/2006/09/07/745085.aspx
在那里他谈到了他为实现他的应用程序所需的类型而做出的决定。
如果是我,谈论这些我们需要编写的代码,其他程序员会认为:
- 当什么都没有并因此过早地优化时,我想得太远了。
- 在没有减速或性能问题的情况下过度思考无关紧要的细节。
或两者。
并建议只是实施它,而不是担心这些,直到它们成为问题。
哪个更优惠?
在完成任何实施之前,如何区分性能关键型应用程序的过早优化和明智决策?
java - Java:枚举与 if-then-else 的性能
我没有真正的运气通过使用谷歌得到这个比较的简明答案,而不是自己做耗时的评估,我想我会先问。
我相当肯定使用 Enums 的 switch 语句会比 if-then-else 语句执行得更快,尽管它是否是一个明显的差异是另一个问题。
有人可以为我解释一下吗?
感谢大家的快速回复,我会在以后的项目中记住这一点。
python - 剪切一个numpy数组
我想“剪切”一个 numpy 数组。我不确定我是否正确使用了“剪切”一词;通过剪切,我的意思是:
将第一列移动 0 位
将第二列
移动 1 位 将第三列移动 2 位
等...
所以这个数组:
会变成这个数组:
或类似这个数组的东西:
取决于我们如何处理边缘。我对边缘行为不太讲究。
这是我对执行此操作的功能的尝试:
它似乎工作。如果没有请告诉我!
它也显得笨重和不雅。我是否忽略了执行此操作的内置 numpy/scipy 函数?在 numpy 中是否有更清洁/更好/更有效的方法来做到这一点?我在重新发明轮子吗?
编辑:
如果这适用于 N 维数组,而不仅仅是二维情况,则加分。
这个函数将位于循环的中心,我将在我们的数据处理中重复多次,所以我怀疑它实际上值得优化。
第二次编辑:我终于做了一些基准测试。看起来 numpy.roll 是要走的路,尽管有循环。谢谢,tom10 和 Sven Marnach!
基准代码:(在 Windows 上运行,我认为不要在 Linux 上使用 time.clock)
r - 表切片是否占用 R 中的内存?
如果我使用列名获取表的切片,R 是否分配内存以将切片保存在新位置?具体来说,我有一个表,其中包含列 depth1 和 depth2 等。我想添加包含两者的最大值和最小值的列。我有两种方法:
或者
如果我没有用完新内存,我宁愿只取一次切片,否则我想保存重新分配。哪一个更好?在处理大型数据集时,内存问题可能很关键,因此请不要对所有邪恶模因的根源投反对票。
unit-testing - 为单元测试优化一个类是好的做法,还是为时过早?
我在 StackOverflow 上看到(并搜索过)很多关于过早优化的问题——大街上的一句话是,它是万恶之源。:PI承认我经常为此感到内疚;我并没有真正以代码易读性为代价来优化速度,但我将使用似乎更适合该任务的数据类型和方法以逻辑方式重写我的代码(例如,在 Actionscript 3 中,使用类型化向量而不是非类型化数组用于迭代),如果我可以让我的代码更优雅,我会这样做。这通常有助于我理解我的代码,并且我通常知道我为什么要进行这些更改。
无论如何,我今天在想——在 OOP 中,我们提倡封装,试图隐藏实现并促进接口,从而使类松散耦合。这个想法是在不必知道内部发生了什么的情况下制作一些可以工作的东西——黑匣子的想法。
因此,这是我的问题——尝试在类级别对代码进行深度优化是否明智,因为 OOP 促进了模块化?或者这是否属于过早优化的范畴?我在想,如果您使用一种易于支持单元测试的语言,您可以测试、基准测试和优化该类,因为它本身就是一个接受输入并生成输出的模块。但是,作为一个编写代码的人,我不知道等到项目完全完成后再开始优化是否更明智。
供参考:我以前从未在团队中工作过,所以对于有这种经验的开发人员来说显而易见的事情对我来说可能是陌生的。
希望这个问题适合 StackOverflow - 我没有找到另一个直接回答我的查询的问题。
谢谢!
编辑:考虑到这个问题,我意识到“分析”可能是正确的术语,而不是“单元测试”;单元测试检查模块是否正常工作,而分析检查性能。此外,我之前应该问的部分问题 - 在创建单个模块之后对它们进行分析不会减少应用程序完成后的时间分析吗?
我的问题源于我正在尝试做的游戏开发 - 我必须创建应该以最佳方式执行的模块,例如图形引擎(它们是否会是一个不同的故事:D)。在性能不太重要的应用程序中,我可能不会担心这一点。