【发布时间】:2012-06-06 21:55:39
【问题描述】:
我在这里回答了另一个人的问题How to count string occurrence in string? 所以我在玩算法here,在对一些函数进行基准测试后,我想知道为什么向后循环比向前循环慢得多。
注意:下面的代码不能正常工作,有 其他有效的(这不是这个问题的重点),请注意 复制前>粘贴
转发
function occurrences(string, substring) {
var n = 0;
var c = 0;
var l = substring.length;
for (var i = 0, len = string.length; i < len; i++) {
if (string.charAt(i) == substring.charAt(c)) {
c++;
} else {
c = 0;
}
if (c == l) {
c = 0;
n++;
}
}
return n;
}
向后
function occurrences(string, substring) {
var n = 0;
var l = substring.length - 1;
var c = l;
for (i = string.length; i > 1; i--) {
if (string.charAt(i) == substring.charAt(c)) {
c--;
} else {
c = l;
}
if (c < 0) {
c = l;
n++;
}
}
return n;
}
【问题讨论】:
标签: javascript performance loops