DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby...

Preview:

Citation preview

M I D O R I F R O M S C R AT C HD E LT O N D I N G @东仙队⻓长

I S R U B Y S L O W ?

Use code provided in: http://codeforces.com/blog/entry/10024

H E A P S O R T ( 1 0 ^ 7 E L E M E N T S )

C++ (clang-800)Go 1.7.4

Swift 3.0.1Rust 1.13

Java 8Crystal

Node 7.2.1Pypy3 5.5.0LuaJIT 2.0.4

Elixir 1.4.0JRuby (Graal)JRuby 9.1.6.0

PHP 7.0Ruby 2.4.0

PHP 5.6Lua 5.2.4

Python 3.6.0Perl 5.18.2

100 1000 10000 100000 1000000172,625

140,20890,17184,900

47,29041,404

32,2727,574

4,0752,822

2,1822,052

1,6691,373

1,1561,085817759

Running Time (ms)

R U B Y I S S L O W, B U T N O T T H AT S L O W.

Web Server Basic Views (Slim)Views + DB

(Sequel)

WEBrick 273 req/s 116 req/s 111 req/s

Thin 1597 req/s 174 req/s 139 req/s

Unicorn 605 req/s 121 req/s 121 req/s

Sinatra Benchmark

M O S T P E R F O R M A N C E P R O B L E M S W E R E C A U S E D B Y I / O B L O C K I N G .

J AVA S C R I P T- S T Y L E R U B Y

M I D D L E A G E S

E V E N T M A C H I N E N I O 4 Rv.s.

E V E N T M A C H I N E N I O 4 R

M R I S C R AT C H L I B E V

J R U B Y S C R AT C H J AVA N I O

F E AT U R E F U L L - F E AT U R E I O S E L E C T O R O N LY

E X T E N S I O N P L E N T I F U L R A R E

C O M M U N I T Y A C T I V E ? A C T I V E

E V E N T M A C H I N E N I O 4 R

M R I S C R AT C H L I B E V

J R U B Y S C R AT C H J AVA N I O

F E AT U R E F U L L - F E AT U R E I O S E L E C T O R O N LY

E X T E N S I O N P L E N T I F U L R A R E

C O M M U N I T Y A C T I V E ? A C T I V E

def get(url, &callback) http = EM HttpRequest.new(url).get http.callback do callback.call(http.response) endendEM.run do get(‘https://google.com/') do |result| puts result EM.stop end puts 'Requesting...'end

F I B E R - O P T I M I Z E D R U B Y

I N D U S T R I A L A G E S

https://github.com/igrigorik/em-synchrony

W H AT M I D O R I I S ?

M O D E R N A G E S

• Event Adapter

• Lightweight Design

• Scalable Structure

C U R R E N T S TAT U S

• EventMachine -> nio4r

• HTTP/FTP Request Support

• Redis Support (Including Ohm)

• PostgreSQL, MySQL Support (Including Sequel)

Web Server Basic DB (Sequel)

Thin 2124 req/s 134 req/s

Midori 6209 req/s 3587 req/s

Benchmark

F U T U R E P L A N S

F U T U R E A G E S

• HTTP/2 Support

• Better macOS Support

• Support more Gems

• Fixing Lots of Bugs

D E M O

Recommended