загадки бытия
Mar. 28th, 2009 03:32 pmТут надысь немножко почекал перформенс джаваскрипта на разных браузерах.
orleanz меня поправил и ещё раз поправил.
А я тут побаловался, и вижу в хроме очень интересную вещь.
Обратите внимание, что пробел всегда в первой позиции, искать-то нечего.
Если я в timeit() строю строку используя cat, построение занимает 0 времени в хроме, зато поиск в последнем случае занимает больше пяти секунд. А если я строю строку используя join, то построение занимает больше 5 секунд, а поиск получается очень быстро.
Объяснить такое явление я как-то затрудняюсь.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
А я тут побаловался, и вижу в хроме очень интересную вещь.
function nchars(n) { var s = " "; for (var i = 0; n - 1 > i; i++) { var r = 61 + Math.random() * 50; s += String.fromCharCode(r); } return s; } function join(chunk, m) { var array = []; for (var i = 0; m > i; i++) { array.push(chunk) } return array.join(''); } function cat(chunk, m) { var s = ""; for (var i = 0; m > i; i++) { s += chunk; } return s; } function timeit(n) { var chunk = nchars(n/500); var startedAt = new Date().getTime(); var s = cat(chunk, 500); println(n + " built for " + (new Date().getTime() - startedAt)); startedAt = new Date().getTime(); var i = s.indexOf(" "); println(n + " found for " + (new Date().getTime() - startedAt)); } function benchmarkindexof() { for (var i = 10000; 1000000000 > i; i *= 10) { timeit(i); } } benchmarkindexof();
Обратите внимание, что пробел всегда в первой позиции, искать-то нечего.
Если я в timeit() строю строку используя cat, построение занимает 0 времени в хроме, зато поиск в последнем случае занимает больше пяти секунд. А если я строю строку используя join, то построение занимает больше 5 секунд, а поиск получается очень быстро.
Объяснить такое явление я как-то затрудняюсь.