Skip to content

Instantly share code, notes, and snippets.

@Infocatcher
Last active December 16, 2015 05:49
Show Gist options
  • Save Infocatcher/5387565 to your computer and use it in GitHub Desktop.
Save Infocatcher/5387565 to your computer and use it in GitHub Desktop.
Test: String.indexOf() vs other methods
var stack = 'before@resource://gre/modules/XPIProvider.jsm -> jar:file:///Z:/FirefoxPortable/Data/profile/extensions/[email protected]!/bootstrap.js:1899\n\
wrapper@resource://gre/modules/XPIProvider.jsm -> jar:file:///Z:/FirefoxPortable/Data/profile/extensions/[email protected]!/bootstrap.js:2211\n\
SocialUI.enabled@chrome://browser/content/browser.js:4292\n\
SSB_updateShareState@chrome://browser/content/browser.js:4644\n\
XULBrowserWindow.onLocationChange@chrome://browser/content/browser.js:11409\n\
@chrome://browser/content/tabbrowser.xml:384\n\
_callProgressListeners@chrome://browser/content/tabbrowser.xml:381\n\
updateCurrentBrowser@chrome://browser/content/tabbrowser.xml:896\n\
onselect@chrome://browser/content/browser.xul:1\n\
set_selectedIndex@chrome://global/content/bindings/tabbox.xml:661\n\
set_selectedPanel@chrome://global/content/bindings/tabbox.xml:680\n\
set_selectedIndex@chrome://global/content/bindings/tabbox.xml:398\n\
set_selectedItem@chrome://global/content/bindings/tabbox.xml:430\n\
set_selectedTab@chrome://global/content/bindings/tabbox.xml:110\n\
set_selectedTab@chrome://browser/content/tabbrowser.xml:2128\n\
loadOneTab@chrome://browser/content/tabbrowser.xml:1137\n\
openLinkIn@chrome://treestyletab/content/windowHelper.js:337\n\
openUILinkIn@chrome://browser/content/utilityOverlay.js:202\n\
DUI_showDownloadManagerUI@resource://gre/components/DownloadsUI.js:132\n\
DUI_show@resource://gre/components/DownloadsUI.js:91\n\
BrowserDownloadsUI@chrome://browser/content/browser.js:10776\n\
oncommand@chrome://browser/content/browser.xul:1';
var c = 20e3;
var i = c + 1, t = Date.now();
while(--i) {
stack.indexOf("@chrome:/-test-/browser/content/downloads/downloads.js:") != -1
|| stack.indexOf("@resource:/-test-/app/modules/DownloadsCommon.jsm:") != -1
|| stack.indexOf("@resource:/-test-/app/components/DownloadsUI.js:") != -1
|| stack.indexOf("@resource:/-test-/gre/modules/DownloadsCommon.jsm:") != -1
|| stack.indexOf("@resource:/-test-/gre/components/DownloadsUI.js:") != -1;
}
var dt1 = Date.now() - t;
var i = c + 1, t = Date.now();
while(--i) {
var lines = stack.split(/@|:/);
lines.indexOf("chrome:/-test-/browser/content/downloads/downloads.js") != -1
|| lines.indexOf("resource:/-test-/app/modules/DownloadsCommon.jsm") != -1
|| lines.indexOf("resource:/-test-/app/components/DownloadsUI.js") != -1
|| lines.indexOf("resource:/-test-/gre/modules/DownloadsCommon.jsm") != -1
|| lines.indexOf("resource:/-test-/gre/components/DownloadsUI.js") != -1;
}
var dt2 = Date.now() - t;
var i = c + 1, t = Date.now();
while(--i) {
var lines = stack.split(/@|:/);
lines.some(function(line) {
return line == "chrome:/-test-/browser/content/downloads/downloads.js"
|| line == "resource:/-test-/app/modules/DownloadsCommon.jsm"
|| line == "resource:/-test-/app/components/DownloadsUI.js"
|| line == "resource:/-test-/gre/modules/DownloadsCommon.jsm"
|| line == "resource:/-test-/gre/components/DownloadsUI.js";
});
}
var dt3 = Date.now() - t;
var i = c + 1, t = Date.now();
while(--i) {
var lines = stack.split(/@|:/);
for(var j = 0, l = lines.length; j < l; ++j) {
var line = lines[j];
if(
line == "chrome:/-test-/browser/content/downloads/downloads.js"
|| line == "resource:/-test-/app/modules/DownloadsCommon.jsm"
|| line == "resource:/-test-/app/components/DownloadsUI.js"
|| line == "resource:/-test-/gre/modules/DownloadsCommon.jsm"
|| line == "resource:/-test-/gre/components/DownloadsUI.js"
)
break;
}
}
var dt4 = Date.now() - t;
"String.indexOf(): " + dt1
+ "\nArray.indexOf(): " + dt2
+ "\nArray.some(): " + dt3
+ "\nArray iteration: " + dt4;
/* Firefox 23.0a1 (2013-04-14):
String.indexOf(): 104
Array.indexOf(): 2365
Array.some(): 1199
Array iteration: 1669
*/
var stack = 'before@resource://gre/modules/XPIProvider.jsm -> jar:file:///Z:/FirefoxPortable/Data/profile/extensions/[email protected]!/bootstrap.js:1899\n\
wrapper@resource://gre/modules/XPIProvider.jsm -> jar:file:///Z:/FirefoxPortable/Data/profile/extensions/[email protected]!/bootstrap.js:2211\n\
SocialUI.enabled@chrome://browser/content/browser.js:4292\n\
SSB_updateShareState@chrome://browser/content/browser.js:4644\n\
XULBrowserWindow.onLocationChange@chrome://browser/content/browser.js:11409\n\
@chrome://browser/content/tabbrowser.xml:384\n\
_callProgressListeners@chrome://browser/content/tabbrowser.xml:381\n\
updateCurrentBrowser@chrome://browser/content/tabbrowser.xml:896\n\
onselect@chrome://browser/content/browser.xul:1\n\
set_selectedIndex@chrome://global/content/bindings/tabbox.xml:661\n\
set_selectedPanel@chrome://global/content/bindings/tabbox.xml:680\n\
set_selectedIndex@chrome://global/content/bindings/tabbox.xml:398\n\
set_selectedItem@chrome://global/content/bindings/tabbox.xml:430\n\
set_selectedTab@chrome://global/content/bindings/tabbox.xml:110\n\
set_selectedTab@chrome://browser/content/tabbrowser.xml:2128\n\
loadOneTab@chrome://browser/content/tabbrowser.xml:1137\n\
openLinkIn@chrome://treestyletab/content/windowHelper.js:337\n\
openUILinkIn@chrome://browser/content/utilityOverlay.js:202\n\
DUI_showDownloadManagerUI@resource://gre/components/DownloadsUI.js:132\n\
DUI_show@resource://gre/components/DownloadsUI.js:91\n\
BrowserDownloadsUI@chrome://browser/content/browser.js:10776\n\
oncommand@chrome://browser/content/browser.xul:1';
var c = 40e3;
var i = c + 1, t = Date.now();
while(--i) {
stack.indexOf("@chrome://browser/content/downloads/downloads.js:") != -1
|| stack.indexOf("@resource://app/modules/DownloadsCommon.jsm:") != -1
|| stack.indexOf("@resource://app/components/DownloadsUI.js:") != -1
|| stack.indexOf("@resource://gre/modules/DownloadsCommon.jsm:") != -1
|| stack.indexOf("@resource://gre/components/DownloadsUI.js:") != -1
|| stack.indexOf("@resource:///modules/DownloadsCommon.jsm:") != -1
|| stack.indexOf("@resource:///components/DownloadsUI.js:") != -1;
}
var dt1 = Date.now() - t;
var i = c + 1, t = Date.now();
while(--i) {
stack.indexOf("@chrome://browser/content/downloads/downloads.js:") != -1
|| /@resource:\/\/(?:app|gre)?\/modules\/DownloadsCommon\.jsm:/.test(stack)
|| /@resource:\/\/(?:app|gre)?\/components\/DownloadsUI\.jsm:/.test(stack);
}
var dt2 = Date.now() - t;
var i = c + 1, t = Date.now();
while(--i) {
stack.indexOf("@chrome://browser/content/downloads/downloads.js:") != -1
|| stack.indexOf("/modules/DownloadsCommon.jsm:") != -1
&& /@resource:\/\/(?:app|gre)?\/modules\/DownloadsCommon\.jsm:/.test(stack)
|| stack.indexOf("/components/DownloadsUI.jsm:") != -1
&& /@resource:\/\/(?:app|gre)?\/components\/DownloadsUI\.jsm:/.test(stack);
}
var dt3 = Date.now() - t;
"String.indexOf(): " + dt1
+ "\nRegExp.test(): " + dt2
+ "\nString.indexOf() + RegExp.test(): " + dt3;
/*
String.indexOf(): 178
RegExp.test(): 188
String.indexOf() + RegExp.test(): 109
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment