mrousavy / StorageBenchmark

Benchmark App to compare different storage libraries (MMKV, AsyncStorage, WatermelonDB, RealmDB, SQLite)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Storage Benchmarks

This is a benchmark app to compare popular storage solutions for React Native.

It's running React Native 0.68, with Hermes enabled.

The Benchmark consists of calling a get operation (retrieve one value from the database) a thousand times.

Here are the results, ranked from fastest to slowest:

  1. react-native-mmkv: 12ms đź‘‘
  2. WatermelonDB: 53ms
  3. RealmDB: 81ms
  4. react-native-quick-sqlite: 82ms
  5. AsyncStorage: 242ms

MMKV is 20x faster than AsyncStorage (slowest), and 4x faster than WatermelonDB (second fastest)!

Output in the console:

Tested on an iPhone 11 Pro, Hermes, Debug

Run it

  1. Clone the repo and navigate to the app/ directory
  2. Run yarn
  3. Run yarn pods
  4. Run yarn ios --device "YOURPHONENAME"

You can also omit the --device "YOURPHONENAME" flag, but running on a Simulator always gives different results than on an actual device.

JS Engine

The benchmark project currently uses Hermes. To benchmark using JSC instead, set enable_hermes to false in the Podfile.

Hardware

The above results were tested on an iPhone 11 Pro. Results may differ on different iPhones or Android Phones.

Debug

The above results were tested in a debug build. Release mode builds come with many optimizations and are therefore faster than debug.

Operations

The above results were tested using get operations for a single string key (value: 'hello'). Results may differ when using other operations, such as set, delete, update, and more.

About

Benchmark App to compare different storage libraries (MMKV, AsyncStorage, WatermelonDB, RealmDB, SQLite)


Languages

Language:Java 38.4%Language:C++ 16.8%Language:TypeScript 16.7%Language:Objective-C++ 9.2%Language:Objective-C 6.8%Language:Ruby 4.5%Language:Makefile 3.7%Language:JavaScript 2.3%Language:Starlark 1.4%Language:Swift 0.3%