GitHub user otaviojava opened a pull request:
https://github.com/apache/tomee/pull/219
Avoid String in a loop
The reason to prefer StringBuilder is that both + and concat create a new
object every time you call them (provided the right-hand side argument is not
empty). This can quickly add up to a lot of objects, almost all of which are
completely unnecessary.
```java
public class Main
{
public static void main(String[] args)
{
long now = System.currentTimeMillis();
slow();
System.out.println("slow elapsed " + (System.currentTimeMillis() -
now) + " ms");
now = System.currentTimeMillis();
fast();
System.out.println("fast elapsed " + (System.currentTimeMillis() -
now) + " ms");
}
private static void fast()
{
StringBuilder s = new StringBuilder();
for(int i=0;i<100000;i++)
s.append("*");
}
private static void slow()
{
String s = "";
for(int i=0;i<100000;i++)
s+="*";
}
}
```
* slow elapsed 11741 ms
* fast elapsed 7 ms
Also, this PR avoids unnecessary call in StringBuilder
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/otaviojava/tomee
use_string_builder_instad_string_loop
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tomee/pull/219.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #219
----
commit 442a81b3e78b7700f0420573927872bedbec30a4
Author: Otavio Santana <otaviopolianasantana@...>
Date: 2018-11-22T15:23:49Z
removes String concatenation loop in Assembler
commit afec54d2204e6e5b8814cddc7eef427a35b54dd5
Author: Otavio Santana <otaviopolianasantana@...>
Date: 2018-11-22T15:24:04Z
removes String concatenation loop in AnnotationDeployer
commit 20b08f5093e2c562886d6221e5f2a6322bd158e1
Author: Otavio Santana <otaviopolianasantana@...>
Date: 2018-11-22T15:24:17Z
removes String concatenation loop in SunConvertion
commit e859469a996d4581a971869f685dea5bf9b06b8d
Author: Otavio Santana <otaviopolianasantana@...>
Date: 2018-11-22T15:24:41Z
removes String concatenation loop in LoggingPreparedSqlStatement
commit 806df6dc4095d0d444357b242560d182544fa69f
Author: Otavio Santana <otaviopolianasantana@...>
Date: 2018-11-22T18:26:57Z
removes redudant toString
----
---