JSPM

another-string-builder

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q19521F
  • License MIT

Performance improvement for creating strings in loops, better memory management, less resources, vast time execution difference over concatenation in loops with large data

Package Exports

  • another-string-builder

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (another-string-builder) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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.

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