[go: up one dir, main page]

Skip to content
/ xe Public
forked from davidyz0/xe

Hyper Fast I/O Event Loop Using io_uring with C++20 Coroutine Support

License

Notifications You must be signed in to change notification settings

kovdan01/xe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xe

Hyper Fast I/O Event Loop Using io_uring with C++20 Coroutine Support

building

prerequisites

  1. liburing
  2. cmake sudo apt install cmake
  3. g++/clang++ with coroutine support

build

1. mkdir build; cd build
2. cmake -DCMAKE_BUILD_TYPE="Release" -DCMAKE_CXX_COMPILER="/usr/bin/g++-10" ..
   OR
   cmake -DCMAKE_BUILD_TYPE="Release" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" ..
3. cmake --build .
4. ./echoserver

docs

I am considering releasing documentation but for now example/echoserver.cpp should be enough
Coroutine example in example/coroutine_echoserver.cpp

benchmarks

Tested on an i7-8650u on WSL (Linux 5.10) using rust_echo_bench

echoserver.cpp

    run with cargo run --release -- --address "127.0.0.1:8080"
    50 concurrent clients, 512b each: 300,000 reqs/sec
    similar performance achieved with example/coroutine_echoserver.cpp

raw performance (IORING_OP_NOP)
     ring size 512 sqes and cqes: 13,300,000 nops/sec

Tested on a Ryzen 7 5800X on Pop OS (Linux 5.8) using rust_echo_bench

echoserver.cpp

    run with cargo run --release -- --address "127.0.0.1:8080"
    50 concurrent clients, 512b each: 1,100,000 reqs/sec
    similar performance achieved with example/coroutine_echoserver.cpp

raw performance (IORING_OP_NOP)
     ring size 512 sqes and cqes: 15,950,000 nops/sec

About

Hyper Fast I/O Event Loop Using io_uring with C++20 Coroutine Support

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 82.0%
  • C 16.4%
  • CMake 1.6%