IndexedDB vs localStorage

Benchmark created by Jens Arps on


Preparation HTML

<script src="https://raw.github.com/jensarps/IDBWrapper/master/IDBStore.js"></script>

Setup

var i = 0;
  
  var smallData = {
    'lastname': lastnames[Math.floor(Math.random()*5)],
    'firstanme': firstnames[Math.floor(Math.random()*4)],
    'dummyData': {}
  };
  
  var largeData = {
    'lastname': lastnames[Math.floor(Math.random()*5)],
    'firstanme': firstnames[Math.floor(Math.random()*4)],
    'dummyData': dummyData
  };

Test runner

Ready to run.

Testing in
TestOps/sec
localStorage read/write small data
smallData.id = ++i;
ls.setItem(smallData.id, JSON.stringify(smallData));
var value = JSON.parse(ls.getItem(smallData.id));
ready
localStorage read/write large data
largeData.id = ++i;
ls.setItem(largeData.id, JSON.stringify(largeData));
var value = JSON.parse(ls.getItem(largeData.id));
ready
IDB read/write small data
// async test
var value;
smallData.id = ++i;
idb.put(smallData, function(res){
  idb.get(smallData.id, function(res){
    value = res;
    deferred.resolve();
  });
});
ready
IDB read/write large data
// async test
var value;
largeData.id = ++i;
idb.put(largeData, function(res){
  idb.get(largeData.id, function(res){
    value = res;
    deferred.resolve();
  });
});
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.