![]() |
1
3
一些想法: 1)您是否使用估计的最大容量初始化StringBuilder?这样可以节省内部数组重新分配和复制所花费的时间。 2)也许您可以附加一个 拖尾 循环中使用逗号,并避免循环中字符串长度的条件。相反,在方法的末尾添加一个条件,并根据需要删除尾随逗号。 |
![]() |
2
5
首先,我不会重用StringBuilder并总是创建新实例。这肯定会更快,因为它将允许GC使用年轻一代堆区域。 另一个允许消除至少一个if语句的小技巧是这样重写代码:
|
![]() |
3
1
您可以进行以下更改(仅显示差异):
如果一个额外的if 9次,则以添加一次空字符串为代价将其除去。在决定保留此更改之前,您应该测量它是否对您正在使用的数据有任何帮助:—) |
![]() |
4
0
如果您的函数应该连接数组元素,为什么要传入所有这些疯狂的值和未使用的参数?
|
![]() |
5
0
首先对堆栈中的每个元素执行一步,对所有字符串长度的总和进行计数。 然后你可以用
字符串生成器的工作方式类似于数组列表,因此您可能正在用大部分附加值重建该数组。 |
![]() |
6
0
有点小优化…在循环外测试逗号。
其他建议包括:
|
![]() |
7
0
如果你的mstack是一个集合而不是一个数组,你可以
|
![]() |
8
0
此方法中16%的运行时间 包括 或 排除 调用方法?getcurrentmsg()调用可能是一个隐藏的问题,如果它创建了很多对象。 除此之外,我建议从堆栈中取出所有需要的字符串,然后调用
使用 Apache commons library . 尝试依赖测试过的代码来处理这些低级的事情,而不是每隔一天自己对其进行优化。最后,这将给您带来更好的优化结果,因为您将能够专注于全局(即软件的总体设计)。 |
![]() |
9
0
有一个单独的副本
另外,创建具有足够容量的StringBuilder:
因此,当您需要创建消息时,您只需:
空零件不会造成问题,因为它们已经是空的: 你甚至可以硬编码:
但这将导致更多的痛苦,而不是救济在未来,保证。 当你在你的邮箱里添加东西时:
只需复制消息并附加“,”。
根据空值的出现(如果它很低),你可以捕捉到它们。
哪个是 可怕的 或验证它:
我很确定你的方法是做一些你没有告诉我们的事情。可能原因就在那里。 另外,如果100%是1秒,16%也不是那么糟糕。 |
![]() |
10
0
有时候,没有什么可以优化的。我认为这就是其中一个例子。你可以试着删掉一两条指令,但原则上你得不到太快的指令。 我认为唯一需要优化的就是考虑 为什么? 你打了18864次电话,是否可以完全避免其中的一些电话。也许有些是不需要的,或者在某些情况下您可以缓存结果。 |
![]() |
11
0
使用ApacheCommonsLang中的StringBuilder+StringUtils。使用分隔符循环字符串,然后选择StringUtils就是为了这个!
Apache Commons Lang在这里: http://commons.apache.org/lang/ |