TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to JAVA

Java StringBuffer: append, Performance

Use the StringBuffer type to append many strings. Benchmark StringBuilder and StringBuffer.
StringBuffer. Often we need to append many strings and form a larger, single string. With the String class this is slow. Many copies are done.Strings
With StringBuffer, though, no copies are required after an append operation. The buffer within StringBuffer is mutable, changeable. We can convert it to a String with toString.StringBuilder
An example. We create a new instance of the String Buffer class and add ints and chars (spaces) to it. We append() in a loop. Often StringBuffer is used within loops.

Syntax: Please notice how we call the append method. We call append() on the result of another call.

Note: The append method returns an instance of the StringBuffer when it is done internally appending.

Java program that uses StringBuffer import java.lang.StringBuffer; public class Program { public static void main(String[] args) { // Create new StringBuffer. StringBuffer buffer = new StringBuffer(); // Append three ints and spaces. for (int i = 0; i < 3; i++) { buffer.append(i).append(' '); } System.out.println(buffer); } } Output 0 1 2
Benchmark. A StringBuffer is slower than a StringBuilder because it performs threading checks. In this benchmark I test this speed difference. I append 100,000 times to each class.

Version 1: This version of the code appends to the StringBuffer many times. It appends integers and chars.

Version 2: This code uses the StringBuilder class and appends the same values as version 1.

Result: The StringBuffer took over twice as much time. So the StringBuilder, in this situation, is a clear win.

Note: Other than the class name, the methods called here (append) are the same. They have equivalent effects.

Java program that benchmarks StringBuffer import java.lang.StringBuilder; import java.lang.StringBuffer; public class Program { public static void main(String[] args) { long t1 = System.currentTimeMillis(); // Version 1: append to StringBuffer. StringBuffer buffer = new StringBuffer(); for (int i = 0; i < 100000; i++) { buffer.append(i).append(' '); } long t2 = System.currentTimeMillis(); // Version 2: append to StringBuilder. StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100000; i++) { builder.append(i).append(' '); } long t3 = System.currentTimeMillis(); // ... Times. System.out.println(t2 - t1); System.out.println(t3 - t2); } } Output 14 ms, StringBuffer 6 ms, StringBuilder
Concepts. The newer type, StringBuilder, is preferable for speed. It performs over twice as fast in the benchmark. When no threads are involved, this is an easy speedup.
For the rare case when thread safety is needed when appending, StringBuffer is still useful. It works in nearly the same way as StringBuilder for appends and other operations.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf