diff --git a/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S1643.html b/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S1643.html index c739f4a72df..3e87468afe9 100644 --- a/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S1643.html +++ b/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S1643.html @@ -18,4 +18,105 @@
| Method | +size | +Runtime | +Average time | +Error margin | +
|---|---|---|---|---|
plus |
+ 100 |
+ Temurin 21 |
+ 4.19 µs/op |
+ ±0.34 µs/op |
+
plus |
+ 1000 |
+ Temurin 21 |
+ 377.08 µs/op |
+ ±17.36 µs/op |
+
plus |
+ 10000 |
+ Temurin 21 |
+ 40221.49 µs/op |
+ ±1342.76 µs/op |
+
plus |
+ 100000 |
+ Temurin 21 |
+ 5286840.53 µs/op |
+ ±185796.75 µs/op |
+
stringBuilder |
+ 100 |
+ Temurin 21 |
+ 0.97 µs/op |
+ ±0.03 µs/op |
+
stringBuilder |
+ 1000 |
+ Temurin 21 |
+ 10.25 µs/op |
+ ±1.64 µs/op |
+
stringBuilder |
+ 10000 |
+ Temurin 21 |
+ 93.27 µs/op |
+ ±16.05 µs/op |
+
stringBuilder |
+ 100000 |
+ Temurin 21 |
+ 1019.91 µs/op |
+ ±69.58 µs/op |
+
Benchmarking code
+The results were generated by running the following snippet with JMH.
+
+@Param({"100", "1000", "10000", "100000"})
+int size;
+private String word = "append";
+
+@Benchmark
+public String plus() {
+ String str = "";
+ for (int i = 0; i < size; i++) {
+ str = str + word;
+ }
+ return str;
+}
+
+@Benchmark
+public String stringBuilder() {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < size; i++) {
+ builder.append(word);
+ }
+ return builder.toString();
+}
+
diff --git a/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S2864.html b/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S2864.html
index 1d4122f7a5a..2b1c8749943 100644
--- a/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S2864.html
+++ b/sonar-java-plugin/src/main/resources/org/sonar/l10n/java/rules/java/S2864.html
@@ -24,6 +24,109 @@ | Method | +size | +Runtime | +Average time | +Error margin | +
|---|---|---|---|---|
usingEntrySet |
+ 10 |
+ Temurin 21 |
+ 27.48 ns/op |
+ ±6.22 ns/op |
+
usingEntrySet |
+ 1000 |
+ Temurin 21 |
+ 2480.26 ns/op |
+ ±899.05 ns/op |
+
usingEntrySet |
+ 10000 |
+ Temurin 21 |
+ 22745.78 ns/op |
+ ±10505.46 ns/op |
+
usingKeySet |
+ 10 |
+ Temurin 21 |
+ 49.70 ns/op |
+ ±3.78 ns/op |
+
usingKeySet |
+ 1000 |
+ Temurin 21 |
+ 5061.54 ns/op |
+ ±2056.60 ns/op |
+
usingKeySet |
+ 10000 |
+ Temurin 21 |
+ 46689.04 ns/op |
+ ±14509.97 ns/op |
+
Benchmarking code
+The results were generated by running the following snippet with JMH.
+
+@BenchmarkMode({Mode.AverageTime})
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@State(Scope.Benchmark)
+public class S2864 {
+ @Param({"10", "1000", "10000"})
+ int size;
+
+ Map<Integer,Integer> map;
+
+ @Setup(Level.Trial)
+ public void setup() {
+ Random random = new Random();
+ map = new HashMap<>();
+ for (int i = 0; i < size; i++) {
+ map.put(i, random.nextInt());
+ }
+ }
+
+ @Benchmark
+ public int usingKeySet() {
+ int sumKeysValues = 0;
+ for (Integer key : map.keySet()) {
+ sumKeysValues += key + map.get(key);
+ }
+ return sumKeysValues;
+ }
+
+ @Benchmark
+ public int usingEntrySet() {
+ int sumKeysValues = 0;
+ for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
+ sumKeysValues += entry.getKey() + entry.getValue();
+ }
+ return sumKeysValues;
+ }
+}
+
str.indexOf(char1, beginIndex) - beginIndex; // index for char1 not found is (-1-beginIndex)+
| Method | +stringSize | +Runtime | +Average time | +Error margin | +
|---|---|---|---|---|
indexOfOnly |
+ 10 |
+ Temurin 21 |
+ 1.55 ns/op |
+ ±0.12 ns/op |
+
indexOfOnly |
+ 100 |
+ Temurin 21 |
+ 1.78 ns/op |
+ ±0.05 ns/op |
+
indexOfOnly |
+ 1000 |
+ Temurin 21 |
+ 1.82 ns/op |
+ ±0.18 ns/op |
+
indexOfOnly |
+ 10000 |
+ Temurin 21 |
+ 1.77 ns/op |
+ ±0.08 ns/op |
+
substringThenIndexOf |
+ 10 |
+ Temurin 21 |
+ 4.85 ns/op |
+ ±0.41 ns/op |
+
substringThenIndexOf |
+ 100 |
+ Temurin 21 |
+ 6.22 ns/op |
+ ±0.40 ns/op |
+
substringThenIndexOf |
+ 1000 |
+ Temurin 21 |
+ 14.22 ns/op |
+ ±1.66 ns/op |
+
substringThenIndexOf |
+ 10000 |
+ Temurin 21 |
+ 275.00 ns/op |
+ ±20.49 ns/op |
+
Benchmarking code
+The results were generated by running the following snippet with JMH.
+
+@BenchmarkMode({Mode.AverageTime})
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@State(Scope.Benchmark)
+public class S4635 {
+ @Param({"10", "100", "1000", "10000"})
+ int stringSize;
+
+ String input;
+
+ @Setup
+ public void setup() {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < stringSize; i++) {
+ builder.append('a');
+ }
+ input = builder.toString();
+ }
+
+ @Benchmark
+ public int substringThenIndexOf() {
+ return stringSize / 2 + input.substring(stringSize / 2).indexOf('a');
+ }
+
+ @Benchmark
+ public int indexOfOnly() {
+ return input.indexOf('a', stringSize / 2);
+ }
+}
+
diff --git a/sonarpedia.json b/sonarpedia.json
index fccf696f78c..548af18dc70 100644
--- a/sonarpedia.json
+++ b/sonarpedia.json
@@ -3,7 +3,7 @@
"languages": [
"JAVA"
],
- "latest-update": "2025-05-28T09:17:51.640344029Z",
+ "latest-update": "2025-06-23T12:44:09.599349313Z",
"options": {
"no-language-in-filenames": true,
"preserve-filenames": false