Sur mobile, les performances comptent ! On fait donc attention à notre code mais aussi aux technologies choisies.

Afin de confirmer l’utilisation d’une solution de stockage pour une application mobile React Native, nous avons réalisé un Benchmark de performances.

Nous nous sommes basé sur le repo : https://github.com/mrousavy/StorageBenchmark

On savait déjà que le stockage MMKV de Tencent était plus rapide que AsyncStorage, mais nous nous posions quelques questions sur Expo Secure Storage. Expo Secure Store utilise les stockages sécurisés proposés par Android et IOS.

Conditions du test

Device : Samsung Galaxy A40 avec Android version 11

Description du test : suppression et écriture d’une valeur dans le stockage 1 000 fois de suite.

const key = 'k'; deleteItemAsync(key) setItemAsync(key, "hello")

Résultat

Nous avons échangé l’ordre des tests et effectué plusieurs fois le test. On cherche la petite bête pour être sur que les tests ne sont pas influencés par la montée en charge du téléphone.
Les résultats sont presque tout le temps similaires.

Résultat du benchmark
LOG Running Benchmark in 3... 2... 1... LOG Starting Benchmark "Expo Secure Storage "... LOG Finished Benchmark "Expo Secure Storage "! Took 29183.8142ms! LOG Starting Benchmark "MMKV "... LOG Finished Benchmark "MMKV "! Took 40.3598ms! LOG Starting Benchmark "MMKV Encrypt "... LOG Finished Benchmark "MMKV Encrypt "! Took 36.1131ms! LOG Starting Benchmark "AsyncStorage "... LOG Finished Benchmark "AsyncStorage "! Took 6883.7105ms! LOG Starting Benchmark "React Native Keychain"... LOG Finished Benchmark "React Native Keychain"! Took 41867.1368ms! LOG Starting Benchmark "SQLite "... LOG Finished Benchmark "SQLite "! Took 365.2895ms! LOG Starting Benchmark "WatermelonDB "... LOG Finished Benchmark "WatermelonDB "! Took 158.0002ms!

Attention à l’interprétation, échelle logarithmique

Stockage sur mobile benchmark