22
MIDORI FROM SCRATCH DELTON DING @ 东仙队

DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 2: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

I S R U B Y S L O W ?

Page 3: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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)

Page 4: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 5: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 6: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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 .

Page 7: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 8: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 9: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 10: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 11: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 12: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community
Page 13: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 14: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

Page 15: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

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

M O D E R N A G E S

Page 16: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

• Event Adapter

• Lightweight Design

• Scalable Structure

Page 17: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

C U R R E N T S TAT U S

Page 18: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

• EventMachine -> nio4r

• HTTP/FTP Request Support

• Redis Support (Including Ohm)

• PostgreSQL, MySQL Support (Including Sequel)

Page 19: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

Web Server Basic DB (Sequel)

Thin 2124 req/s 134 req/s

Midori 6209 req/s 3587 req/s

Benchmark

Page 20: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

F U T U R E P L A N S

F U T U R E A G E S

Page 21: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

• HTTP/2 Support

• Better macOS Support

• Support more Gems

• Fixing Lots of Bugs

Page 22: DELTON DING @东仙队 MIDORI FROM SCRATCH€¦ · eventmachine nio4r mri scratch libev jruby scratch java nio feature full-feature io selector only extension plentiful rare community

D E M O