closureのgoog.string.startsWithやprototype.jsのString.startsWithではindexOfを呼ぶコードになってます。 goog.string.startsWith = function(str, prefix) { return str.indexOf(prefix) == 0; }; これだとstrが長い文字列でしかもprefixがstr内になかった場合に無駄な探索処理をやる羽目になります。 代わりに正規表現やsubstringを使って比較をすれば処理速度の悪化は避けられそうですが、正規表現や文字列のオブジェクト生成コストが気になります。 そこでlastIndexOfを使って書けば無駄な探索もオブジェクト生成も避けられるはずです。 str.lastIndexOf(prefix, 0) == 0; もちろんendsWithもindexOfで