| Priority |
Normal |
| Type | Bug |
| State | Fixed |
| Assignee | Bas Leijdekkers |
| Subsystem | Code Analysis. Inspection |
| Affected versions |
No affected versions
|
| Fixed in |
No fix versions
|
| Fixed in build |
Next build |
| Build |
7531
|
| Fixed in build |
7719
|
IDEA-41914 |
"Concatenation with empty string" inspection should not warn on compile time constants |
|
|
""+DECIMAL_PLACE time=151659 ns String.valueOf(DECIMAL_PLACE) time=9442612 ns ""+DECIMAL_PLACE time=44825 ns String.valueOf(DECIMAL_PLACE) time=2457340 ns ""+DECIMAL_PLACE time=30193 ns String.valueOf(DECIMAL_PLACE) time=1334597 ns
private static final char DECIMAL_PLACE = '.';
private static final int REPEATS = 10000;
public static void main(String... args) {
doTest();
doTest();
doTest();
}
private static void doTest() {
long start = System.nanoTime();
String s = null;
for (int i = 0; i < REPEATS; i++)
s = "" + DECIMAL_PLACE;
long time = System.nanoTime() - start;
assert ".".equals(s);
start = System.nanoTime();
for (int i = 0; i < REPEATS; i++)
s = String.valueOf(DECIMAL_PLACE);
assert ".".equals(s);
long time2 = System.nanoTime() - start;
System.out.println("\"\"+DECIMAL_PLACE time=" + time + " ns");
System.out.println("String.valueOf(DECIMAL_PLACE) time=" + time2 + " ns");
}
private static final char DECIMAL_PLACE = '.'; private static final int REPEATS = 10000; public static void main(String... args) { doTest(DECIMAL_PLACE); doTest(DECIMAL_PLACE); doTest(DECIMAL_PLACE); } private static void doTest(char c) { long start = System.nanoTime(); String s = null; for (int i = 0; i < REPEATS; i++) s = "" + c; long time = System.nanoTime() - start; assert ".".equals(s); start = System.nanoTime(); for (int i = 0; i < REPEATS; i++) s = String.valueOf(c); assert ".".equals(s); long time2 = System.nanoTime() - start; System.out.println("\"\"+DECIMAL_PLACE time=" + time + " ns"); System.out.println("String.valueOf(DECIMAL_PLACE) time=" + time2 + " ns"); }I guess this inspection should not warn on compile time constants.