string vs stringBuffer comparison (#15306)
Co-authored-by: Sahil <sahilsriv05@gmail.com>
This commit is contained in:
parent
17705cd105
commit
6164b9c0ba
@ -0,0 +1,63 @@
|
||||
package com.baeldung.stringbuffer;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.openjdk.jmh.annotations.Benchmark;
|
||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||
import org.openjdk.jmh.annotations.Measurement;
|
||||
import org.openjdk.jmh.annotations.Mode;
|
||||
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
import org.openjdk.jmh.runner.Runner;
|
||||
import org.openjdk.jmh.runner.RunnerException;
|
||||
import org.openjdk.jmh.runner.options.Options;
|
||||
import org.openjdk.jmh.runner.options.OptionsBuilder;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||
@Measurement(batchSize = 10000, iterations = 10)
|
||||
@Warmup(batchSize = 1000, iterations = 10)
|
||||
@State(Scope.Thread)
|
||||
public class ComparePerformance {
|
||||
|
||||
String strInitial = "springframework";
|
||||
String strFinal = "";
|
||||
String replacement = "java-";
|
||||
|
||||
@Benchmark
|
||||
public String benchmarkStringConcatenation() {
|
||||
strFinal += strInitial;
|
||||
return strFinal;
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public StringBuffer benchmarkStringBufferConcatenation() {
|
||||
StringBuffer stringBuffer = new StringBuffer(strFinal);
|
||||
stringBuffer.append(strInitial);
|
||||
return stringBuffer;
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public String benchmarkStringReplacement() {
|
||||
strFinal = strInitial.replaceFirst("spring", replacement);
|
||||
return strFinal;
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public StringBuffer benchmarkStringBufferReplacement() {
|
||||
StringBuffer stringBuffer = new StringBuffer(strInitial);
|
||||
stringBuffer.replace(0,6, replacement);
|
||||
return stringBuffer;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws RunnerException {
|
||||
Options options = new OptionsBuilder()
|
||||
.include(ComparePerformance.class.getSimpleName()).threads(1)
|
||||
.forks(1).shouldFailOnError(true)
|
||||
.shouldDoGC(true)
|
||||
.jvmArgs("-server").build();
|
||||
new Runner(options).run();
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.baeldung.stringbuffer;
|
||||
|
||||
public class HashCode {
|
||||
|
||||
public static long getHashCodeString(String string) {
|
||||
return string.hashCode();
|
||||
}
|
||||
|
||||
public static long getHashCodeSBuffer(StringBuffer strBuff) {
|
||||
return strBuff.hashCode();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String str = "Spring";
|
||||
System.out.println("String HashCode pre concatenation :" + getHashCodeString(str));
|
||||
str += "Framework";
|
||||
System.out.println("String HashCode post concatenation :" + getHashCodeString(str));
|
||||
|
||||
StringBuffer sBuf = new StringBuffer("Spring");
|
||||
System.out.println("StringBuffer HashCode pre concatenation :" + getHashCodeSBuffer(sBuf));
|
||||
sBuf.append("Framework");
|
||||
System.out.println("StringBuffer HashCode post concatenation :" + getHashCodeSBuffer(sBuf));
|
||||
}
|
||||
}
|
@ -17,7 +17,7 @@ public class StringIteratorTest {
|
||||
public void whenUseJavaForLoop_thenIterate() {
|
||||
String input = "Hello, Baeldung!";
|
||||
String expectedOutput = "Hello, Baeldung!";
|
||||
String result = StringIterator.javaForLoop(input);
|
||||
String result = StringIterator.javaforLoop(input);
|
||||
assertEquals(expectedOutput, result);
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ public class StringIteratorTest {
|
||||
public void whenUseForEachMethod_thenIterate() {
|
||||
String input = "Hello, Baeldung!";
|
||||
String expectedOutput = "Hello, Baeldung!";
|
||||
String result = StringIterator.java8ForEach(input);
|
||||
String result = StringIterator.java8forEach(input);
|
||||
assertEquals(expectedOutput, result);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,32 @@
|
||||
package com.baeldung.stringbuffer;
|
||||
|
||||
import org.junit.Test;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
|
||||
public class ComparePerformanceTest {
|
||||
|
||||
ComparePerformance cp = new ComparePerformance();
|
||||
|
||||
@Test
|
||||
public void whenStringConcatenated_thenResultAsExpected() {
|
||||
assertThat(cp.benchmarkStringConcatenation()).isEqualTo("springframework");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenStringBufferConcatenated_thenResultAsExpected() {
|
||||
StringBuffer stringBuffer = new StringBuffer("springframework");
|
||||
assertThat(cp.benchmarkStringBufferConcatenation()).isEqualToIgnoringCase(stringBuffer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenStringReplaced_thenResultAsExpected() {
|
||||
assertThat(cp.benchmarkStringReplacement()).isEqualTo("java-framework");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenStringBufferReplaced_thenResultAsExpected() {
|
||||
StringBuffer stringBuffer = new StringBuffer("java-framework");
|
||||
assertThat(cp.benchmarkStringBufferReplacement()).isEqualToIgnoringCase(stringBuffer);
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.baeldung.stringbuffer;
|
||||
|
||||
import org.junit.Test;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class HashCodeTest {
|
||||
|
||||
String str = "Spring";
|
||||
StringBuffer sBuf = new StringBuffer("Spring");
|
||||
|
||||
@Test
|
||||
public void whenStringConcat_thenHashCodeChanges() {
|
||||
HashCode hc = new HashCode();
|
||||
|
||||
long initialStringHashCode = hc.getHashCodeString(str);
|
||||
long initialSBufHashCode = hc.getHashCodeSBuffer(sBuf);
|
||||
|
||||
str += "Framework";
|
||||
sBuf.append("Framework");
|
||||
|
||||
assertThat(initialStringHashCode).isNotEqualTo(hc.getHashCodeString(str));
|
||||
assertThat(initialSBufHashCode).isEqualTo(hc.getHashCodeSBuffer(sBuf));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user