1
7
我将停止基于微基准进行优化,转而寻求一些看起来很优雅的代码方面的东西,比如
|
2
2
使用string.format(“%0[长度]d”,i) 如果是8码的话
虽然速度较慢,但键入和调试更复杂的代码所花费的时间可能会超过执行过程中使用的总额外时间。 事实上,如果将已经花费在讨论这一点上的所有工时加起来,很可能会大大超过执行时间节省。 |
3
1
逐个插入填充字符显然很慢。如果性能真的有那么大的问题,您可以使用长度为1..n-1的预定义字符串常量(其中 n 是最大的预期长度),存储在相应索引的ArrayList中。 如果 n 是非常大的,至少您仍然可以插入更大的块而不是单个字符。 但总的来说,正如其他人指出的,只有在您分析了实际情况下的应用程序,并发现哪一段特定的代码是瓶颈时,优化才是可行的。然后,您可以关注这一点(当然,再次进行概要分析以验证您的更改实际上提高了性能)。 |
4
1
下面是一个与您的StringBuilder基本相同的解决方案,它有两个优化:
它还假设numDigits将>=为所需的实际字符,但将正确处理负数:
这种方法在底片方面比你在我的机器上的样品好得多,而且与正片相当:
编辑: 我注意到您的测试恢复了迭代循环中的一些对象,这是我在自己的测试中没有做的(比如在子字符串版本中没有重新计算basenum)。当我将测试更改为一致时(不恢复任何对象/计算),我的版本比您的版本执行得更好:
当然,正如其他人所提到的,微基准测试是非常困难的/“软弱无力”,因为所有的优化都是由虚拟机执行的,并且无法控制它们。 |
5
0
This probably related 链接讨论了许多实现它的方法。我建议使用Apache选项,StringUtils,它可能是最快的,也可能不是最快的,但它通常是最容易理解的选项之一,而且它已经有了)&@的重击,因此它可能不会在某些不可预见的边缘情况下崩溃。;) |
haku · 如何从作为某个值的子字符串的查找表中获取第一条记录? 2 年前 |
Milix · Python循环遍历CSS文件中的所有URL并替换 6 年前 |
Moksh Gaur · 替换<…>子字符串 6 年前 |
Dimitri · 子字符串长度失败(需要的长度超过设置为需要的长度) 6 年前 |
Joe · 要在文本中特定字符之前或/和之后提取的子字符串 6 年前 |
Laughin Coffin · 如何仅从数据库中获取数据片段? 6 年前 |
Reman · 如何在特定列之间找到匹配项? 6 年前 |