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
11
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>"
}