pixelserv-tls v2 Benchmark

This is a quick update to the benchmark described in the previous article. The test procedures are revised as below:

  • empty cache and reload each page five times.
  • record DOMContentLoad, Load, and Finish time for each reload. Take the average.
  • repeat for select_timeout equal to 1s, 5s and 10s.

The benchmark was performed on v2.0.0-rc1 and v35.HZ12.Kk within a short period of time, ~15mins. Hence, the variation in contents and network conditions are minimised.

DCOMContentLoad (blue), Load (red) and
Finish (black); all timing in seconds

The best performance is highlighted in green. For ver. KK (and before), a select_timeout of 1s indicates indeed a good rule of thumb. For v2, 10s is a better choice, and also beats the best time of ver. KK.

The event loop in pixelserv-tls v2 in which it listens for incoming requests is very different from previous versions. This explains the observed difference in performance with respect to select_timeout.

Update on Release v2.0.1

v2.0.1 is a bug fix release. However, there are still two changes that enhance efficiency in pixelserv-tls:

  • FIXED incorrect logics of select() in the main event loop
  • CHANGED more efficient check for next request in a service thread

The first change is a great help when pixelserv-tls is under load. The second change guarantees fastest response possible to a new request on an established connection. These improvements are in scales of tens to hundreds of millisecond. A single shot test like outlined above can hardly detect it. Hence, for v2.0.1-rc4, I decided to benchmark against NXDOMAIN.


There are different schools of thought on DNS-based adblock. Some authors apparently have better understanding than other solutions. One school of thought is to return NXDOMAIN on a blocked advert host from DNS server/forwarder rather than With NXDOMAIN, a client will not attempt to connect. In theory it should be faster than However, for today's complex websites, the client may still run into issues since it's just a bit more efficient of bumping into the wall.

The result

Note that pixelserv-tls like in all my previous benchmarks runs on RT-AC56U, a 800MHz ARM Cortex A9. So expect faster responses if it were running on a better processor or a AMD64 PC.

The table shows no clear winner but pixelserv-tls at least works as fast as NXDOMAIN. On some situations faster than NXDOMAIN e.g. the 'foxnews.com' which appears like a poorly coded website.

Consider pixelserv-tls is also a tool for inspecting privacy breach as well as logging access URLs. This benchmark ensures pixelserv-tls users need not worry about penalty by running it and being beaten by another adblock solution claiming to be fastest.

phew :)

Originally published on Dec 6, 2017


Stephen Yip

Something about you know. Come and share.

comments powered by Disqus