Concurrency - Parallel requests
Node.js
var
defX
=
Q.defer();
var
defY
=
Q.defer();
var
oneAndTwo
=
Q
.all([defX.promise,
defY.promise])
.then(processConcat);
requestValue('/x',
defX);
requestValue('/y',
defY);
Slide 12
Slide 12 text
Concurrency - Parallel requests
Go
var
cx
chan
string
=
make(chan
string)
var
cy
chan
string
=
make(chan
string)
go
requestValue("/x",
cx)
go
requestValue("/y",
cy)
x
:=
<-‐cx
y
:=
<-‐cy
processConcat(x,
y)
Slide 13
Slide 13 text
Efficient memory usage
Slide 14
Slide 14 text
#
Run
benchmark
ab
-‐n
10000
-‐c
100
http://127.0.0.1:8100/
Node.js
FATAL
ERROR:
(...)
process
out
of
memory
Go
Time
taken
for
tests:
20.689
seconds
Complete
requests:
10000
#
No
problems
Slide 15
Slide 15 text
Rich standard library
+ Http
+ Templating
+ JSON
Slide 16
Slide 16 text
Static typing (+ IMO)
+ More robust
+ Easier to refactor
+ Less tests
+ Compiler can go crazy with optimisations
+ Still flexible (with interfaces)
+ No ceremony
Slide 17
Slide 17 text
Compiled
But ultra fast
Slide 18
Slide 18 text
Single binary
+ Compile and deploy
+ No need to worry about dependencies, e.g. NPM modules, RubyGems
Slide 19
Slide 19 text
A lot more
+ Simple and flexible object system - composition
+ Functions as first class
+ Closures
+ Standard formating of source code