wrestling control from web browsers...clojure (clojurescript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40...
TRANSCRIPT
![Page 1: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/1.jpg)
STOPIFYWRESTLING CONTROL FROM WEB BROWSERS
‣ Sam Baxter ‣ Rachit Nigam ‣ Arjun Guha ‣ Joe Politz ‣ Shriram Krishnamurthi
![Page 2: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/2.jpg)
2
WEB PROGRAMMING ENVIRONMENTS
![Page 3: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/3.jpg)
2
WEB PROGRAMMING ENVIRONMENTS
![Page 4: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/4.jpg)
2
WEB PROGRAMMING ENVIRONMENTS
![Page 5: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/5.jpg)
JAVASCRIPT
THE BROWSER RUNTIME
function foo() {
let i = 0;
while (true) {
i++;
}
}
foo (); RUN
Run
3
![Page 6: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/6.jpg)
JAVASCRIPT
THE BROWSER RUNTIME
function foo() {
let i = 0;
while (true) {
i++;
}
}
foo (); RUN
Run Stop
3
![Page 7: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/7.jpg)
JAVASCRIPT
THE BROWSER RUNTIME
function foo() {
let i = 0;
while (true) {
i++;
}
}
foo (); RUN
Run Stop
Run
EVENT QUEUE
3
![Page 8: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/8.jpg)
JAVASCRIPT
THE BROWSER RUNTIME
function foo() {
let i = 0;
while (true) {
i++;
}
}
foo (); i = 0
i = 1
i = 2
RUN
Run Stop
Run
EVENT QUEUE
3
![Page 9: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/9.jpg)
JAVASCRIPT
THE BROWSER RUNTIME
function foo() {
let i = 0;
while (true) {
i++;
}
}
foo (); i = 0
i = 1
i = 2
RUN
Run Stop
Stop
Run
EVENT QUEUE
3
![Page 10: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/10.jpg)
JAVASCRIPT
THE BROWSER RUNTIME
function foo() {
let i = 0;
while (true) {
i++;
}
}
foo (); i = 0
i = 1
i = 2
i = 147
RUN
Run Stop
Stop
Stop
Run
EVENT QUEUE
3
![Page 11: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/11.jpg)
LANGUAGES THAT COMPILE TO JAVASCRIPT 4
![Page 12: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/12.jpg)
LANGUAGES THAT COMPILE TO JAVASCRIPT 4
MAYBE OTHER LANGUAGES AVOID THIS PROBLEM…
![Page 13: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/13.jpg)
LANGUAGES THAT COMPILE TO JAVASCRIPT
ALL INHERIT THE LIMITATIONS OF WEB BROWSERS!
4
![Page 14: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/14.jpg)
JavaScript
STOPIFY
5
JavaScript
![Page 15: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/15.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run Stop
6
![Page 16: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/16.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run Stop
Run
EVENT QUEUE
6
![Page 17: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/17.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run
even
even
odd
Stop
Run
EVENT QUEUE
6
![Page 18: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/18.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run
even
even
odd
Stop
Run
EVENT QUEUE
6
![Page 19: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/19.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run
Runeven
even
odd
Stop
EVENT QUEUE
7
![Page 20: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/20.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run
Runeven
even
odd
Stop
Stop
EVENT QUEUE
7
Run
![Page 21: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/21.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Run
Runeven
even
odd
Stop
Stop
EVENT QUEUE
even
odd
7
Run
![Page 22: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/22.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Stop
Stop
EVENT QUEUE
Runeven
even
odd
even
odd
8
Run
![Page 23: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/23.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Stop
Stop
EVENT QUEUE
Runeven
even
odd
even
oddeven
even
odd
even
odd
8
Run
![Page 24: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/24.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Stop
Stop
EVENT QUEUE
Runeven
even
odd
even
oddeven
even
odd
even
odd
8
Run
![Page 25: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/25.jpg)
CONTINUATIONS FOR JAVASCRIPT
SAVING THE STACK AT RUNTIME
Stopfunction odd(n) {
if (n == 0) return false;
else return even(n-1);
}
function even(n) {
if (n == 0) return true;
else return odd(n-1);
}
even(100000)
Stop
EVENT QUEUE
Runeven
even
odd
even
odd
8
Run
![Page 26: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/26.jpg)
APPLYING STOPIFY TO PYTHON 9
![Page 27: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/27.jpg)
APPLYING STOPIFY TO PYTHON 9
PYTHON
![Page 28: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/28.jpg)
APPLYING STOPIFY TO PYTHON 9
PYTHON
JAVASCRIPTPYJS
![Page 29: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/29.jpg)
APPLYING STOPIFY TO PYTHON 9
PYTHON
JAVASCRIPT
JAVASCRIPT+CC
PYJS
![Page 30: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/30.jpg)
APPLYING STOPIFY TO PYTHON 9
PYTHON
JAVASCRIPT
JAVASCRIPT+CC
STOPIFY
PYJS
![Page 31: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/31.jpg)
APPLYING STOPIFY TO PYTHON 9
PYTHON
JAVASCRIPT
JAVASCRIPT+CC
STOPIFY
STOPPABLE JAVASCRIPT
PYJS
![Page 32: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/32.jpg)
APPLYING STOPIFY TO PYTHON
UNFORTUNATELY, THIS IS SLOW10
0
10
20
30
anag
ramb
binary_ t re
es
deltab
lue fibnb
ody
pysto
ne
rayt ra
ce_sim
ple
richard
s
spect
ral_ norm
Benchmark
Slow
dow
n re
lati
ve t
o P
yJS
![Page 33: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/33.jpg)
UNDERSTANDING THIS SLOWDOWN
JAVASCRIPT CALL GRAPH
11
![Page 34: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/34.jpg)
UNDERSTANDING THIS SLOWDOWN
JAVASCRIPT CALL GRAPH
11
EVEN
ODD
![Page 35: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/35.jpg)
UNDERSTANDING THIS SLOWDOWN
JAVASCRIPT CALL GRAPH
11
STOPIFY
EVEN
ODD
EVEN
ODD
![Page 36: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/36.jpg)
UNDERSTANDING THIS SLOWDOWN
JAVASCRIPT CALL GRAPH
11
STOPIFY
EVEN
ODD
EVEN
ODD
EVEN
ODD
![Page 37: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/37.jpg)
UNDERSTANDING THIS SLOWDOWN
JAVASCRIPT CALL GRAPH
11
STOPIFY
EVEN
ODD
EVEN
ODD
EVEN
ODD
![Page 38: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/38.jpg)
12
![Page 39: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/39.jpg)
JAVASCRIPT QUIRKS
SPOT THE INFINITE LOOP
13
![Page 40: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/40.jpg)
JAVASCRIPT QUIRKS
SPOT THE INFINITE LOOP
13
x + 1;
![Page 41: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/41.jpg)
JAVASCRIPT QUIRKS
SPOT THE INFINITE LOOP
13
x + 1;
const x = { toString: function() { while (true) {}
}};x + 1;
![Page 42: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/42.jpg)
JAVASCRIPT QUIRKS
SPOT THE INFINITE LOOP
13
x + 1;
const x = { toString: function() { while (true) {}
}};x + 1;
‣ Implicit Method Calls
‣ ‘toString’ and ‘valueOf’
‣ Getters and Setters
‣ Dynamic Code Execution (eval)
![Page 43: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/43.jpg)
SUBLANGUAGES OF JAVASCRIPT 14
JavaScript
![Page 44: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/44.jpg)
SUBLANGUAGES OF JAVASCRIPT 14
JavaScript
toString
valueOf
eval‘arguments’ object
![Page 45: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/45.jpg)
SUBLANGUAGES OF JAVASCRIPT
COMPILERS USE RESTRICTED SUB-LANGUAGES
14
JavaScript
toString
valueOf
eval‘arguments’ object
![Page 46: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/46.jpg)
SUBLANGUAGES OF JAVASCRIPT
COMPILERS USE RESTRICTED SUB-LANGUAGES
14
JavaScript
toString
valueOf
eval‘arguments’ object
OCaml
![Page 47: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/47.jpg)
SUBLANGUAGES OF JAVASCRIPT
COMPILERS USE RESTRICTED SUB-LANGUAGES
14
JavaScript
toString
valueOf
eval‘arguments’ object
OCaml
![Page 48: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/48.jpg)
SUBLANGUAGES OF JAVASCRIPT
COMPILERS USE RESTRICTED SUB-LANGUAGES
14
JavaScript
toString
valueOf
eval‘arguments’ object
OCaml
Python
![Page 49: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/49.jpg)
IMPROVING PERFORMANCE WITH SAFE ASSUMPTIONS15BACK TO PYTHON
0
10
20
30b
bina
ry_t
rees
delta
blue fib float
nbod
ypy
stone
richa
rds
scim
ark−
fftsp
ectra
l_no
rmBenchmark
Slow
dow
nImplicit method callsNo implicit method calls
![Page 50: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/50.jpg)
IMPROVING PERFORMANCE WITH SAFE ASSUMPTIONS15BACK TO PYTHON
0
10
20
30b
bina
ry_t
rees
delta
blue fib float
nbod
ypy
stone
richa
rds
scim
ark−
fftsp
ectra
l_no
rmBenchmark
Slow
dow
nImplicit method callsNo implicit method calls
Median Slowdown
1.7x
![Page 51: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/51.jpg)
EVALUATION
OPTIMIZATIONS
16
![Page 52: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/52.jpg)
EVALUATION
OPTIMIZATIONS
16
Pyth
on
C++
OCa
ml
Java
Scala
Cloj
ure
…
LANGUAGE
![Page 53: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/53.jpg)
EVALUATION
OPTIMIZATIONS
16
Pyth
on
C++
OCa
ml
Java
Scala
Cloj
ure
…
LANGUAGE
Chrome
Firefox
Safari
Microsoft Edge
ChromeOS
PLATFORM
![Page 54: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/54.jpg)
EVALUATION
OPTIMIZATIONS
16
Pyth
on
C++
OCa
ml
Java
Scala
Cloj
ure
…
LANGUAGE
Chrome
Firefox
Safari
Microsoft Edge
ChromeOS
PLATFORM
Implicit Functions
‘arguments’
Stack Representation
…IMPLEMENTATION
![Page 55: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/55.jpg)
EVALUATION 17
●
●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 50 100 150
Slowdown
% o
f tria
ls
●Chrome (11.6)ChromeBook (10.8)Edge (30.5)Firefox (11.0)Safari (8.4)
C++ (Emscripten)
●
●
●●
● ●
●●
● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 10 20 30 40 50
Slowdown
% o
f tria
ls
●Chrome (9.1)ChromeBook (11.2)Edge (13.2)Firefox (17.7)Safari (5.4)
Clojure (ClojureScript)
●
●
●
●
● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 10 20 30 40
Slowdown
% o
f tria
ls
●Chrome (3.0)ChromeBook (5.0)Edge (7.0)Firefox (3.4)Safari (1.7)
Dart (dart2js)
●
●
●
●● ● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 20 40 60
Slowdown
% o
f tria
ls
●Chrome (8.1)ChromeBook (6.0)Edge (20.9)Firefox (9.2)Safari (6.3)
Java (JSweet)
●
●
●
●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 200 400
Slowdown
% o
f tria
ls
●Chrome (20.0)ChromeBook (14.6)Edge (37.2)Firefox (24.8)Safari (13.7)
JavaScript
●●
●
●
●
● ●● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 20 40
Slowdown
% o
f tria
ls
●Chrome (5.4)ChromeBook (5.7)Edge (7.2)Firefox (8.9)Safari (4.2)
OCaml (BuckleScript)
●
●
●
●
● ● ● ● ● ● ● ●● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 5 10 15
Slowdown
% o
f tria
ls
●Chrome (1.7)ChromeBook (1.4)Edge (3.8)Firefox (3.4)Safari (2.0)
Python (PyJS)
●
●●
●
●● ●
●● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 40 80 120
Slowdown
% o
f tria
ls
●Chrome (14.6)ChromeBook (20.2)Edge (17.2)Firefox (23.9)Safari (11.8)
Scala (ScalaJS)
● ● ●
●
●
●
●● ●
● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 10 20 30 40
Slowdown
% o
f tria
ls●
Chrome (8.8)ChromeBook (9.0)Edge (18.2)Firefox (13.5)Safari (6.5)
Scheme (scheme2js)
![Page 56: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/56.jpg)
EVALUATION 17
●
●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 50 100 150
Slowdown
% o
f tria
ls
●Chrome (11.6)ChromeBook (10.8)Edge (30.5)Firefox (11.0)Safari (8.4)
C++ (Emscripten)
●
●
●●
● ●
●●
● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 10 20 30 40 50
Slowdown
% o
f tria
ls
●Chrome (9.1)ChromeBook (11.2)Edge (13.2)Firefox (17.7)Safari (5.4)
Clojure (ClojureScript)
●
●
●
●
● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 10 20 30 40
Slowdown
% o
f tria
ls
●Chrome (3.0)ChromeBook (5.0)Edge (7.0)Firefox (3.4)Safari (1.7)
Dart (dart2js)
●
●
●
●● ● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 20 40 60
Slowdown
% o
f tria
ls
●Chrome (8.1)ChromeBook (6.0)Edge (20.9)Firefox (9.2)Safari (6.3)
Java (JSweet)
●
●
●
●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 200 400
Slowdown%
of t
rials
●Chrome (20.0)ChromeBook (14.6)Edge (37.2)Firefox (24.8)Safari (13.7)
JavaScript
●●
●
●
●
● ●● ● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 20 40
Slowdown
% o
f tria
ls
●Chrome (5.4)ChromeBook (5.7)Edge (7.2)Firefox (8.9)Safari (4.2)
OCaml (BuckleScript)
●
●
●
●
● ● ● ● ● ● ● ●● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 5 10 15
Slowdown
% o
f tria
ls
●Chrome (1.7)ChromeBook (1.4)Edge (3.8)Firefox (3.4)Safari (2.0)
Python (PyJS)
●
●●
●
●● ●
●● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 40 80 120
Slowdown
% o
f tria
ls
●Chrome (14.6)ChromeBook (20.2)Edge (17.2)Firefox (23.9)Safari (11.8)
Scala (ScalaJS)
● ● ●
●
●
●
●● ●
● ● ● ● ● ● ● ● ● ● ●
0.00
0.25
0.50
0.75
1.00
0 10 20 30 40
Slowdown
% o
f tria
ls
●Chrome (8.8)ChromeBook (9.0)Edge (18.2)Firefox (13.5)Safari (6.5)
Scheme (scheme2js)
![Page 57: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/57.jpg)
18STOPIFY.ORG
![Page 58: WRESTLING CONTROL FROM WEB BROWSERS...Clojure (ClojureScript) 0.00 0.25 0.50 0.75 1.00 0 10 20 30 40 Slowdown % of trials Chrome (3.0) ChromeBook (5.0)](https://reader034.vdocuments.us/reader034/viewer/2022052102/603c9be780da53014d49267b/html5/thumbnails/58.jpg)
STOPIFYWRESTLING CONTROL FROM WEB BROWSERS
‣ Sam Baxter ‣ Rachit Nigam ‣ Arjun Guha ‣ Joe Politz ‣ Shriram Krishnamurthi
http://www.stopify.org