Skip to content

Instantly share code, notes, and snippets.

@tuchida
Last active March 20, 2021 05:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tuchida/a8141c9946b0b597cdb2b171a3b8be5f to your computer and use it in GitHub Desktop.
Save tuchida/a8141c9946b0b597cdb2b171a3b8be5f to your computer and use it in GitHub Desktop.
Make findPrototypeId faster
var props = [
"constructor",
"toString",
"toSource",
"valueOf",
"charAt",
"charCodeAt",
"indexOf",
"lastIndexOf",
"split",
"substring",
"toLowerCase",
"toUpperCase",
"substr",
"concat",
"slice",
"bold",
"italics",
"fixed",
"strike",
"small",
"big",
"blink",
"sup",
"sub",
"fontsize",
"fontcolor",
"link",
"anchor",
"equals",
"equalsIgnoreCase",
"match",
"search",
"replace",
"localeCompare",
"toLocaleLowerCase",
"toLocaleUpperCase",
"trim",
"trimLeft",
"trimRight",
"includes",
"startsWith",
"endsWith",
"normalize",
"repeat",
"codePointAt",
"padStart",
"padEnd",
"trimStart",
"trimEnd",
];
for (var i = 0; i < 1000000; i++) {
for (var j = 0, len = props.length; j < len; j++) {
''[props[j]];
}
}
/*
$ git checkout improve-findPrototypeId; ./gradlew jar
$ for ((i=0; i<5; i++)); do time java -jar buildGradle/libs/rhino-1.7.14-SNAPSHOT.jar -opt 9 -version 200 benchmark-findPrototypeId.js; done
real 0m5.182s
user 0m5.510s
sys 0m0.329s
real 0m5.395s
user 0m5.605s
sys 0m0.582s
real 0m5.612s
user 0m5.581s
sys 0m0.711s
real 0m5.245s
user 0m5.364s
sys 0m0.556s
real 0m5.105s
user 0m5.171s
sys 0m0.586s
$ git checkout master; ./gradlew jar
$ for ((i=0; i<5; i++)); do time java -jar buildGradle/libs/rhino-1.7.14-SNAPSHOT.jar -opt 9 -version 200 benchmark-findPrototypeId.js; done
real 0m6.088s
user 0m6.184s
sys 0m0.621s
real 0m5.746s
user 0m5.752s
sys 0m0.606s
real 0m5.404s
user 0m5.737s
sys 0m0.297s
real 0m5.508s
user 0m5.743s
sys 0m0.372s
real 0m6.058s
user 0m6.299s
sys 0m0.613s
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment