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:
- react-native-mmkv: 12ms 👑
- WatermelonDB: 53ms
- RealmDB: 81ms
- react-native-quick-sqlite: 82ms
- 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
- Clone the repo and navigate to the
app/
directory - Run
yarn
- Run
yarn pods
- 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.
The benchmark project currently uses Hermes. To benchmark using JSC instead, set enable_hermes
to false
in the Podfile
.
The above results were tested on an iPhone 11 Pro. Results may differ on different iPhones or Android Phones.
The above results were tested in a debug build. Release mode builds come with many optimizations and are therefore faster than debug.
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.