another-string-builder
v1.0.0
Published
Performance improvement for creating strings in loops, better memory management, less resources, vast time execution difference over concatenation in loops with large data
Downloads
1
Maintainers
Readme
Node String Builder
##Why use a string builder?
- A string builder greatly reduces execution time and system resources.
- Vastly improves memory management
- Can shave minutes off of large concatenation / HTML build loops
- More commonly seen in Java and C#, so why not Javascript?
- Don't take my word for it. Google 'Why use a string builder' to find out more
##When to use a string builder When you are looping through large amounts of data or creating a number of elements over an iterative process; it is there that typically you'll find the most accepted use. Using a string builder for everything would not make sense as concatenation will do just fine. But anywhere you're dynamically creating a large set of elements, its a very good idea. Don't believe those who say it's negligible, run a test and see the performance improvements yourself.
- Selected article demonstrating resource improvement: https://www.codingame.com/playgrounds/3002/the-difference-between-string-and-stringbuilder-in-c/benchmarking-string-vs-stringbuilder
Performance Metrics - coming soon...
- Benchmark test in node
- Graph the result over # of strings to resource improvement at scale
Code Examples
Basic syntax:
//pretend fetch from DB result:
var DBresult = {
state: 'Texas',
food: 'toast',
adj: 'good'
}
//string builder syntax
let sb = new StringBuilder("<ul>", "</ul>");
for(i=0; i < 10000;i++){
sb.append("<li>")
sb.append(DBresult.state);
sb.append(DBresult.food);
sb.append("is");
sb.append(DBresult.adj);
sb.append("</li>");
}
document.getElementById('myList').insertAdjacentHTML('beforeend',sb.toString(' ',true)); //Lightning Flash!
let ss = new StringBuilder("<p>", "</p>");
sb.append("toast");
sb.append("is");
sb.append("good.");
sb.prepend("Texas");
---
{
console.log(sb.length); // 25
console.log(sb.toString(' ')); //"<p>Texas toast is good.</p>"
console.log(sb.length); // 27 (includes join character insertions from toString's 1st parameter)
console.log(sb.toString('-')); //"<p>Texas-toast-is-good.</p>"
console.log(sb.toString(true)); //"<p>Texastoastisgood.</p>"
console.log(sb.toString()); //empty ""
}
// OR //
{
//clear and keep prefix
console.log(sb.toString('',true,true)); //"<p>Texastoastisgood.</p>"
console.log(sb.toString()); // "<p></p>"
}