Hellepoll

Infrastructure

http server

SHOW HN2011

Hellepoll

Hellepoll is a blazingly-fast async HTTP server written in C++

github.com

#http server#epoll#async server#c++ server#high performance

35points
28comments
#339of 1,097 in 2011
Top 31%of 2011 by points

How HN took it

CuriousMostly questions and neutral comments

0 positive, 6 neutral or asking, 0 mixed, 5 critical, out of 11 comments about the project. Thread score -0.30.

Performance: 0 for, 3 againstExecution: 0 for, 2 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Interesting performance-focused design

    From 2 comments
    • Cool stuff. I assume you wrote this for your own personal gratification and not to compete with Nginx or something. What was the coolest thing you learned in putting this together?
      k33n on HN
    • Right, there is indeed a mode switch to read/write from/to the tcp buffer or accept a connection. Luckily mode switches are not context switches - which are typically massively…
      willvarfar on HN

Objections

  • Benchmarks measure requests per second rather than replies per second

    From 2 comments
    • I believe you are testing the requests / sec and not replies / sec. While requests / sec matters a bit, you'll most probably be bottle-necking in your context switches. What…
      kqueue on HN
    • Measuring requests per second is close to measuring the number of accept system calls you can do. Since it's a system call you have a context switch.
      kqueue on HN
  • C++ overhead makes it slower than nginx

    From 1 comment
    • Probably because is much slower than nginx, C++ adds extra "fat" that nginx (writen in C) doesn't have.
      givan on HN
  • Extern C block wrapping of headers is incorrect

    From 1 comment
    • You should not be #include-ing headers inside of an extern "C" block. It is up to those headers to: ``` #ifdef __cplusplus extern "C" { #endif ```
      apaprocki on HN

Requests

  • Compare against libevent evhttp or other servers

    From 1 comment
    • How does it compare to libevent evhttp server? Besides being written in C++...
      pilooch on HN

Questions

  • Why not compare with nginx

    From 1 comment
    • I'm curious as to why the author hasn't referenced nginx, which is written also event based (epoll/kqueue) and written in C.
      tewks on HN
  • What was the coolest thing learned building it

    From 1 comment
    • Cool stuff. I assume you wrote this for your own personal gratification and not to compete with Nginx or something. What was the coolest thing you learned in putting this together?
      k33n on HN

Alternatives named

  • nginx

    From 1 comment
    • I'm curious as to why the author hasn't referenced nginx, which is written also event based (epoll/kqueue) and written in C.
      tewks on HN
  • ULib

    From 1 comment
    • ULib is a mature and well-considered C++ framework for developing high-performance applications that includes a blazingly-fast async HTTP server--more batteries included.…
      enduser on HN
  • libevent evhttp

    From 1 comment
    • How does it compare to libevent evhttp server? Besides being written in C++...
      pilooch on HN
  • libev

    From 1 comment
    • Network IO, Disk IO, scheduling, locks etc.. all trigger context switches and not only mode switch because only the kernel is allowed to manipulate data structures related to…
      kqueue on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/3165679)