View
13
Download
0
Category
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
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