Skip to content

Commit 7904c3e

Browse files
iaforekpivovarit
authored andcommitted
BAEL-1065 Simple performance check StringBuffer vs StringBuilder. (eugenp#2512)
* Code for Dependency Injection Article. * Added Java based configuration. Downloaded formatter.xml and reformatted all changed files. Manually changed tab into 4 spaces in XML configuration files. * BAEL-434 - Spring Roo project files generated by Spring Roo. No formatting applied. Added POM, java and resources folders. * Moved project from roo to spring-roo folder. * BAEL-838 Initial code showing how to remove last char - helper class and tests. * BAEL-838 Corrected Helper class and associated empty string test case. Added StringUtils.substing tests. * BAEL-838 Refromatted code using formatter.xml. Added Assert.assertEquals import. Renamed test to follow convention. Reordered tests. * BAEL-838 - Added regex method and updated tests. * BAEL-838 Added new line examples. * BAEL-838 Renamed RemoveLastChar class to StringHelper and added Java8 examples. Refactord code. * BAEL-838 Changed method names * BAEL-838 Tiny change to keep code consistant. Return null or empty. * BAEL-838 Removed unresolved conflict. * BAEL-821 New class that shows different rounding techniques. Updated POM. * BAEL-821 - Added unit test for different round methods. * BAEL-821 Changed test method name to follow the convention * BAEL-821 Added more test and updated round methods. * BAEL-837 - initial commit. A few examples of adding doubles. * BAEL-837 - Couple of smaller changes * BAEL-837 - Added jUnit test. * BAEL-579 Updated Spring Cloud Version I was getting error: java.lang.NoSuchMethodError: org.springframework.cloud.config.environment.Environment After version update, all is okay. * BAEL-579 Added actuator to Cloud Config Client. * BAEL-579 Enabled cloud bus and updated dependencies. * BAEL-579 Config Client using Spring Cloud Bus. * BAEL-579 Recreated Basic Config Server. * BAEL-579 Recreated Config Client. * BAEL-579 Removed test Git URL. * BAEL-579 Added Actuator to Config Client * BAEL-579 Added Spring Cloud Bus to Client. * BAEL-579 Server changes for Spring Cloud Bus Added dependencies and removed git.clone-on-start as this was causing server to throw errors after git properties change. * BAEL-579 Removed Git URL. * Revert "BAEL-579 Updated Spring Cloud Version" This reverts commit f775bf9. * Revert "BAEL-579 Config Client using Spring Cloud Bus." This reverts commit 1d96bc5. * Revert "BAEL-579 Enabled cloud bus and updated dependencies." This reverts commit 7845da9. * Revert "BAEL-579 Added actuator to Cloud Config Client." This reverts commit 076657a. * BAEL-579 Added missing dependency versions. * BAEL-579 Added missing dependency versions. * Updated gitignore * BAEL-1065 Simple performance check StringBuffer vs StringBuilder. * BAEL-1065 Added JMH benchmarks
1 parent 4b9ec46 commit 7904c3e

File tree

4 files changed

+86
-14
lines changed

4 files changed

+86
-14
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,5 @@ SpringDataInjectionDemo/.mvn/wrapper/maven-wrapper.properties
4141
spring-call-getters-using-reflection/.mvn/wrapper/maven-wrapper.properties
4242

4343
spring-check-if-a-property-is-null/.mvn/wrapper/maven-wrapper.properties
44-
/vertx-and-rxjava/.vertx/
44+
*.springBeans
45+

core-java/pom.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,31 @@
372372
</arguments>
373373
</configuration>
374374
</plugin>
375+
376+
<plugin>
377+
<groupId>org.codehaus.mojo</groupId>
378+
<artifactId>exec-maven-plugin</artifactId>
379+
380+
<executions>
381+
<execution>
382+
<id>run-benchmarks</id>
383+
<phase>integration-test</phase>
384+
<goals>
385+
<goal>exec</goal>
386+
</goals>
387+
<configuration>
388+
<classpathScope>test</classpathScope>
389+
<executable>java</executable>
390+
<arguments>
391+
<argument>-classpath</argument>
392+
<classpath />
393+
<argument>org.openjdk.jmh.Main</argument>
394+
<argument>.*</argument>
395+
</arguments>
396+
</configuration>
397+
</execution>
398+
</executions>
399+
</plugin>
375400
</plugins>
376401

377402
</build>
@@ -448,4 +473,4 @@
448473
<maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version>
449474
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
450475
</properties>
451-
</project>
476+
</project>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.baeldung.string;
2+
3+
import org.openjdk.jmh.annotations.Benchmark;
4+
import org.openjdk.jmh.annotations.Scope;
5+
import org.openjdk.jmh.annotations.State;
6+
import org.openjdk.jmh.runner.Runner;
7+
import org.openjdk.jmh.runner.RunnerException;
8+
import org.openjdk.jmh.runner.options.Options;
9+
import org.openjdk.jmh.runner.options.OptionsBuilder;
10+
11+
public class StringBufferStringBuilder {
12+
13+
public static void main(String[] args) throws RunnerException {
14+
15+
Options opt = new OptionsBuilder()
16+
.include(StringBufferStringBuilder.class.getSimpleName())
17+
.build();
18+
19+
new Runner(opt).run();
20+
}
21+
22+
@State(Scope.Benchmark)
23+
public static class MyState {
24+
int iterations = 1000;
25+
String initial = "abc";
26+
String suffix = "def";
27+
}
28+
29+
@Benchmark
30+
public StringBuffer benchmarkStringBuffer(MyState state) {
31+
StringBuffer stringBuffer = new StringBuffer(state.initial);
32+
for (int i = 0; i < state.iterations; i++) {
33+
stringBuffer.append(state.suffix);
34+
}
35+
return stringBuffer;
36+
}
37+
38+
@Benchmark
39+
public StringBuilder benchmarkStringBuilder(MyState state) {
40+
StringBuilder stringBuilder = new StringBuilder(state.initial);
41+
for (int i = 0; i < state.iterations; i++) {
42+
stringBuilder.append(state.suffix);
43+
}
44+
return stringBuilder;
45+
}
46+
}

core-java/src/test/java/com/baeldung/maths/RoundTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,56 +15,56 @@ public class RoundTest {
1515
private double expected = 2.03d;
1616

1717
@Test
18-
public void givenDecimalNumber_whenRoundToNDecimalPlaces_thenGetExpectedResult() {
18+
public void givenDecimalNumber_whenRoundToNDecimalPlaces_thenGetExpectedResult() {
1919
Assert.assertEquals(expected, Round.round(value, places), delta);
2020
Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta);
2121
Assert.assertEquals(expected, Round.roundAvoid(value, places), delta);
2222
Assert.assertEquals(expected, Precision.round(value, places), delta);
2323
Assert.assertEquals(expected, DoubleRounder.round(value, places), delta);
24-
24+
2525
places = 3;
2626
expected = 2.035d;
27-
27+
2828
Assert.assertEquals(expected, Round.round(value, places), delta);
2929
Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta);
3030
Assert.assertEquals(expected, Round.roundAvoid(value, places), delta);
3131
Assert.assertEquals(expected, Precision.round(value, places), delta);
3232
Assert.assertEquals(expected, DoubleRounder.round(value, places), delta);
33-
33+
3434
value = 1000.0d;
3535
places = 17;
3636
expected = 1000.0d;
37-
37+
3838
Assert.assertEquals(expected, Round.round(value, places), delta);
3939
Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta);
4040
Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 92.23372036854776 !
4141
Assert.assertEquals(expected, Precision.round(value, places), delta);
4242
Assert.assertEquals(expected, DoubleRounder.round(value, places), delta);
43-
43+
4444
value = 256.025d;
4545
places = 2;
4646
expected = 256.03d;
47-
47+
4848
Assert.assertEquals(expected, Round.round(value, places), delta);
4949
Assert.assertNotEquals(expected, Round.roundNotPrecise(value, places), delta); // Returns: 256.02 !
5050
Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 256.02 !
5151
Assert.assertEquals(expected, Precision.round(value, places), delta);
5252
Assert.assertNotEquals(expected, DoubleRounder.round(value, places), delta); // Returns: 256.02 !
53-
54-
value = 260.775d;
53+
54+
value = 260.775d;
5555
places = 2;
5656
expected = 260.78d;
57-
57+
5858
Assert.assertEquals(expected, Round.round(value, places), delta);
5959
Assert.assertNotEquals(expected, Round.roundNotPrecise(value, places), delta); // Returns: 260.77 !
6060
Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 260.77 !
6161
Assert.assertEquals(expected, Precision.round(value, places), delta);
6262
Assert.assertNotEquals(expected, DoubleRounder.round(value, places), delta); // Returns: 260.77 !
63-
63+
6464
value = 90080070060.1d;
6565
places = 9;
6666
expected = 90080070060.1d;
67-
67+
6868
Assert.assertEquals(expected, Round.round(value, places), delta);
6969
Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta);
7070
Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 9.223372036854776E9 !

0 commit comments

Comments
 (0)