58
STOPIFY WRESTLING CONTROL FROM WEB BROWSERS Sam Baxter Rachit Nigam Arjun Guha Joe Politz Shriram Krishnamurthi

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)

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

STOPIFYWRESTLING CONTROL FROM WEB BROWSERS

‣ Sam Baxter ‣ Rachit Nigam ‣ Arjun Guha ‣ Joe Politz ‣ Shriram Krishnamurthi

http://www.stopify.org