SOes 37541

JavaScript performance comparison

Test case created by Mariano

Preparation code

<div id="resultado"></div>
      
<script>
Benchmark.prototype.setup = function() {
  var texto = String.raw`Hola, llamaba para pedirte el -b-favor- de que lleves los -b-niños- a la -b-e\-s\-c\-u\-e\-l\-a- hoy -b-con- un texto más largo
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sodales metus sit amet scelerisque tristique. Pellentesque congue urna a sem pulvinar, ac imperdiet enim fermentum. Suspendisse condimentum congue odio et lobortis. Nunc consectetur dignissim tortor, in pretium purus posuere a. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras tristique mauris non felis maximus mattis. Duis at metus ac turpis porttitor egestas vitae quis lorem.
  
  Nulla sapien nunc, interdum tempor lectus quis, faucibus vestibulum erat. Curabitur non lacinia nunc. Aenean mi diam, fermentum at mauris sed, vestibulum iaculis ante. Nam semper odio magna. Nam sit amet semper velit. Nunc facilisis dignissim elit sed tempus. Nullam consequat congue efficitur. Sed ut placerat ante, vel volutpat sapien. Sed dolor metus, consectetur ut eros sed, viverra laoreet mauris. Sed bibendum malesuada velit et feugiat. Aliquam gravida, leo sed consequat viverra, est nulla commodo massa, iaculis sollicitudin erat tellus in sem. In volutpat facilisis pellentesque. Duis suscipit sagittis elit, scelerisque mattis mi elementum a.
  
  Etiam efficitur lectus sit amet felis molestie fermentum. Donec varius aliquet convallis. Aliquam vitae magna auctor, aliquam est eget, lobortis sapien. Nunc finibus placerat turpis pretium efficitur. Nulla risus elit, cursus id elementum quis, dapibus sit amet tortor. Phasellus eget interdum tellus, vitae efficitur diam. Vivamus sit amet dui vel quam efficitur suscipit vel vel mauris. Phasellus rutrum sagittis vestibulum. Fusce interdum pulvinar tempus. Curabitur fermentum eget orci nec pretium. Suspendisse pulvinar justo elit, vel facilisis quam congue at. Nullam accumsan est ut lectus fermentum, sit amet sodales sapien cursus. Suspendisse nec felis a dolor luctus laoreet eu eget nisi. Suspendisse consectetur, eros sit amet porta hendrerit, tellus ipsum pulvinar quam, eu scelerisque mauris ex ac sapien. Curabitur ac condimentum leo.
  
  -b-sigue-
  
  Aliquam orci erat, maximus sed orci vel, scelerisque tincidunt nisi. Duis enim tellus, vestibulum nec rhoncus eleifend, euismod porttitor quam. Maecenas sed tortor et nisl efficitur ultrices a a sem. Sed pharetra vestibulum dolor et laoreet. Donec feugiat, est quis auctor pellentesque, lacus sem pretium tellus, sed ultrices odio massa id mauris. Sed bibendum facilisis ex. Nam ultrices, dui non ullamcorper eleifend, justo mi sodales purus, finibus fringilla quam quam eget purus. Nunc at nisl commodo, dapibus orci a, iaculis est. Praesent eleifend euismod justo eu mattis.
  
  Integer pretium ligula leo, vitae eleifend nunc semper sit amet. In lobortis iaculis scelerisque. Fusce semper condimentum felis, sit amet iaculis ipsum aliquam quis. Proin viverra magna ipsum, at mollis nunc pulvinar ut. Morbi suscipit nec odio eu condimentum. Vestibulum maximus est sed blandit imperdiet. Proin ullamcorper ligula nec arcu sodales, id aliquam ipsum facilisis. Cras at sem molestie, gravida felis vitae, sagittis sem.`,
      resultado;
  
  function boldLI(texto) {
      var ini    = 0,
          pos    = 0,
          texto2 = "";
  
      while ((pos = texto.lastIndexOf("-b-")) > -1) {	
          if ((posguion = texto.lastIndexOf("-")) > -1 && posguion > pos+3) {
              texto2 = "<b>" +  texto.substring(pos+3, posguion) + "</b>" + texto.substring(posguion+1) + texto2;
          } else {
              texto2 = "<b>" + texto.substring(pos+3) + "</b>" + texto2;
          }
          texto = texto.substring(0, pos);
      }
      return texto + texto2;
  }
  
  function boldRegEx(texto) {
      var regex = /-b-([^-<\\]*(?:\\.[^-<\\]*)*)-/g,
          reemp = "<b>$1</b>";
      return texto.replace(regex,reemp);
  }

};

Benchmark.prototype.teardown = function() {
  document.getElementById("resultado").innerHTML = resultado;
  
  texto = String.raw`Hola, llamaba para pedirte el -b-favor- de que lleves los -b-niños- a la -b-e\-s\-c\-u\-e\-l\-a- hoy -b-con- un texto más largo
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sodales metus sit amet scelerisque tristique. Pellentesque congue urna a sem pulvinar, ac imperdiet enim fermentum. Suspendisse condimentum congue odio et lobortis. Nunc consectetur dignissim tortor, in pretium purus posuere a. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras tristique mauris non felis maximus mattis. Duis at metus ac turpis porttitor egestas vitae quis lorem.
  
  Nulla sapien nunc, interdum tempor lectus quis, faucibus vestibulum erat. Curabitur non lacinia nunc. Aenean mi diam, fermentum at mauris sed, vestibulum iaculis ante. Nam semper odio magna. Nam sit amet semper velit. Nunc facilisis dignissim elit sed tempus. Nullam consequat congue efficitur. Sed ut placerat ante, vel volutpat sapien. Sed dolor metus, consectetur ut eros sed, viverra laoreet mauris. Sed bibendum malesuada velit et feugiat. Aliquam gravida, leo sed consequat viverra, est nulla commodo massa, iaculis sollicitudin erat tellus in sem. In volutpat facilisis pellentesque. Duis suscipit sagittis elit, scelerisque mattis mi elementum a.
  
  Etiam efficitur lectus sit amet felis molestie fermentum. Donec varius aliquet convallis. Aliquam vitae magna auctor, aliquam est eget, lobortis sapien. Nunc finibus placerat turpis pretium efficitur. Nulla risus elit, cursus id elementum quis, dapibus sit amet tortor. Phasellus eget interdum tellus, vitae efficitur diam. Vivamus sit amet dui vel quam efficitur suscipit vel vel mauris. Phasellus rutrum sagittis vestibulum. Fusce interdum pulvinar tempus. Curabitur fermentum eget orci nec pretium. Suspendisse pulvinar justo elit, vel facilisis quam congue at. Nullam accumsan est ut lectus fermentum, sit amet sodales sapien cursus. Suspendisse nec felis a dolor luctus laoreet eu eget nisi. Suspendisse consectetur, eros sit amet porta hendrerit, tellus ipsum pulvinar quam, eu scelerisque mauris ex ac sapien. Curabitur ac condimentum leo.
  
  -b-sigue-
  
  Aliquam orci erat, maximus sed orci vel, scelerisque tincidunt nisi. Duis enim tellus, vestibulum nec rhoncus eleifend, euismod porttitor quam. Maecenas sed tortor et nisl efficitur ultrices a a sem. Sed pharetra vestibulum dolor et laoreet. Donec feugiat, est quis auctor pellentesque, lacus sem pretium tellus, sed ultrices odio massa id mauris. Sed bibendum facilisis ex. Nam ultrices, dui non ullamcorper eleifend, justo mi sodales purus, finibus fringilla quam quam eget purus. Nunc at nisl commodo, dapibus orci a, iaculis est. Praesent eleifend euismod justo eu mattis.
  
  Integer pretium ligula leo, vitae eleifend nunc semper sit amet. In lobortis iaculis scelerisque. Fusce semper condimentum felis, sit amet iaculis ipsum aliquam quis. Proin viverra magna ipsum, at mollis nunc pulvinar ut. Morbi suscipit nec odio eu condimentum. Vestibulum maximus est sed blandit imperdiet. Proin ullamcorper ligula nec arcu sodales, id aliquam ipsum facilisis. Cras at sem molestie, gravida felis vitae, sagittis sem.`;

};
</script>

Preparation code output

<div id="resultado"></div>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
RegExp
resultado = boldRegEx(texto);
pending…
lastIndexOf
resultado = boldLI(texto);
pending…

You can edit these tests or add even more tests to this page by appending /edit to the URL.

Compare results of other browsers

0 Comments