Performance - amark/gun GitHub Wiki

Ladies and Gentlemen, here are the latest performance benchmarks on our Open Source Firebase project - a realtime, decentralized, offline-first, graph database!

Thank you.

We're getting even better numbers on other devices:

  • Android phone, ~5M ops/sec.
  • Macbook Air, Chrome, ~30M ops/sec.
  • Macbook Pro, Chrome Canary, ~80M ops/sec.
  • Lenovo netbook, IE6, ~100K ops/sec.

Compare to Redis at 0.5M ops/sec (cached reads, Macbook Air), even with pipeline optimizations turned on, here: https://redis.io/topics/benchmarks .

How did we accomplish 100,000 ops/sec in IE6?

This test ran on the cheapest Windows laptop available on the market. A $150 2GB Atom CPU which was loaded up with IETester to do some performance benchmarking. These numbers represent a breakthrough in performance not possible with other databases. A technical deep dive is highlighted on the Read the Source podcast:

IMAGE ALT TEXT HERE

For those who want the short summary:

  1. Use PTSD (Performance Testing Speed Development, like TDD) to micro-optimize your code without getting lost in micro-optimizations. This tech talk is a must watch - @alexhultman, author of the high performance C++ uWebSockets library praised it here.
  2. Reduce function calls and prioritize hot code paths as the first if statements.
  3. Do work only once, then use centralized caching and cache updating to skip ever doing work again.

Resulting caveats:

  • These performance benchmarks rarely have cache misses, but replicates other database benchmarks (like Redis) which do the same. Measuring disk I/O is not very interesting.
  • Take all performance testing benchmarks with a huge grain of salt. That is why we're working on panic, a distributed testing runner.

Check out our main GitHub repo to learn more or hop on the gitter to chat!