whatisgithub

What is evpp?

qihoo360/evpp — explained in plain English

Analysis updated 2026-06-26

3,767C++Audience · developerComplexity · 4/5LicenseSetup · moderate

In one sentence

evpp is a high-performance C++ library for building network servers and clients that handle many simultaneous connections efficiently. It supports TCP, UDP, and HTTP and includes ready-made clients for Memcached and NSQ message queues.

Mindmap

mindmap
  root((evpp))
    What it does
      Network server library
      TCP UDP HTTP support
      Event-driven design
    Tech Stack
      C++11
      libevent
    Use Cases
      High-throughput servers
      Memcached client
      NSQ message queue
    Audience
      C++ backend engineers
      Systems programmers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a high-throughput TCP server that handles thousands of simultaneous client connections without one thread per connection.

USE CASE 2

Add non-blocking HTTP request handling to a C++ service that needs to respond to many web clients at once.

USE CASE 3

Connect a C++ backend service to a Memcached cache cluster using the bundled evmc client library.

USE CASE 4

Integrate an NSQ message queue consumer into a C++ microservice using the evnsq companion client.

What is it built with?

C++libeventC++11

How does it compare?

qihoo360/evppintrolab/rtabmapabcz316/skroot-linuxkernelroot
Stars3,7673,7683,765
LanguageC++C++C++
Setup difficultymoderatehardhard
Complexity4/54/55/5
Audiencedeveloperresearcherdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires libevent and a C++11-capable compiler, builds on Linux, BSD, macOS, and Windows with CMake.

Use, modify, and distribute freely for any purpose including commercial use, as long as you keep the copyright and license notice. BSD 3-Clause license.

So what is it?

evpp is a C++ library for building network servers and clients. It supports three communication protocols: TCP (for persistent connections), UDP (for connectionless messaging), and HTTP (for web-style request-response communication). The library is open source and was created by Qihoo360, a Chinese internet company, to handle their internal needs for building high-throughput network services. The core design uses an event-driven, non-blocking approach, which means the server can handle many simultaneous connections without creating a separate thread for each one. Instead, threads share an event loop that wakes up and responds only when new data arrives. This pattern is common in high-performance server software because it reduces the overhead of switching between threads constantly. The library is built on top of libevent, a well-tested event handling library, but replaces libevent's internal memory buffer with its own implementation. According to the project's benchmarks, this change makes evpp 17 to 130 percent faster than libevent in data throughput tests, while performing at a similar level to Boost.Asio (another widely-used C++ networking library). The project also ships two companion client libraries. The first, evmc, is a non-blocking C++ client for Memcached (a caching system used to speed up web applications). The second, evnsq, is a client for NSQ (a message queue system for passing data between services). Both are reported to be running in production at Qihoo360, handling hundreds of billions of requests and messages per day. evpp uses C++11 features throughout and runs on Linux, BSD, macOS, and Windows. The library is licensed under the BSD 3-Clause license.

Copy-paste prompts

Prompt 1
Show me a minimal evpp TCP echo server in C++ that accepts multiple simultaneous clients using its event loop.
Prompt 2
I want to use evpp to build an HTTP server in C++ that handles POST requests. What does the handler registration look like?
Prompt 3
How do I use the evmc library from evpp to make non-blocking GET and SET calls to a Memcached server from C++?
Prompt 4
I'm comparing evpp to Boost.Asio for a new C++ network service. Based on the library's design and benchmarks, what are the trade-offs I should consider?

Frequently asked questions

What is evpp?

evpp is a high-performance C++ library for building network servers and clients that handle many simultaneous connections efficiently. It supports TCP, UDP, and HTTP and includes ready-made clients for Memcached and NSQ message queues.

What language is evpp written in?

Mainly C++. The stack also includes C++, libevent, C++11.

What license does evpp use?

Use, modify, and distribute freely for any purpose including commercial use, as long as you keep the copyright and license notice. BSD 3-Clause license.

How hard is evpp to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is evpp for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.