Coder Social home page Coder Social logo

rotor's Introduction

Rotor

Status: Alpha
Examples:TCP echo server, TCP client (telnet)
Ecosystem:libraries and apps using rotor
Documentation:http://tailhook.github.com/rotor/

The mio-based framework for rust for doing I/O in simple and composable way.

The rotor core (this crate) basically consists of:

  • An event loop handler (in terms of mio) which turns mio event into event to specific state machine
  • A Future type which allows communication between state machines in safe and efficient way
  • A simple way to combine multiple libraries (e.g. multiple protocol handlers) into single mio event loop

At the end of the day, rotor is the minimalistic core for making composable libraries on top. It's less than 0.5KLoC.

You are expected to use some higher level abstraction most of the time. For example, you should use stream abstraction (yet to be implemented) for making TCP protocol parser.

Resources

Both are rather historical at the moment

Benchmarks

These benchmarks are based on old version of this example. Hopefully we will get updated benchmarks soon.

Just few micro-benchmarks to show that framework has a decent peformance.

The performance on the few years old laptop (i7-3517U CPU @ 1.90GHz):

> wrk -t2 -c 400 http://localhost:8888/
Running 10s test @ http://localhost:8888/
  2 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.19ms   18.03ms 627.44ms   99.54%
    Req/Sec    19.66k     1.76k   21.93k    81.00%
  391170 requests in 10.01s, 32.83MB read
Requests/sec:  39071.42
Transfer/sec:      3.28MB

Performance on newer desktop class CPU (i7-4790K CPU @ 4.00GHz):

> ./wrk -t 2 -c 400 http://127.0.0.1:8888
Running 10s test @ http://127.0.0.1:8888
  2 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.24ms    1.56ms 126.94ms   99.91%
    Req/Sec    91.35k     2.27k   93.76k    98.00%
  1818133 requests in 10.00s, 152.58MB read
Requests/sec: 181781.96
Transfer/sec:     15.26MB

Note: both benchmarks are run on single threaded server.

The benchmarks are too early (not a full implementation of HTTP), so no comparison bencmarks listed here.

rotor's People

Contributors

donaldpipowitch avatar ebarnard avatar erikjohnston avatar frewsxcv avatar partim avatar pyfisch avatar seanmonstar avatar tailhook avatar timnn avatar tshepang avatar vks avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.