Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

Looks like WebKit has problems appending to a very long string. The less we can do that the better, so I came up with this solution:

  var dest = 'apple';
  while (dest.length < 100000) {
    var out = '';
    for (var i=dest.length-5, end=i+10; i<end; ++i)
      out += dest[i];
    dest += out;
  }
That brought the time from about 4 seconds to a more respectable 90 msec.


That reduces the number of string appends, sure. But it is well known (see either "The Good Parts" or "High Performance Javascript" that appending strings is quadratic in JavaScript, and that the best way to assemble a large, multipart string is arrayOfStrings.join('');

* And by quadratic I mean "copies the whole string every time" such that an append loop is N^2 while a push+join is linear.


  But it is well known (see either "The Good Parts" or "High
  Performance Javascript" that appending strings is quadratic 
  in JavaScript, and that the best way to assemble a large, 
  multipart string is arrayOfStrings.join('');
It's a bit fuzzy now, modern browser optimized that quite a bit, so this mainly applies to older versions of IE.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: