Plain JS vs Immutable vs mori (v7)

Revision 7 of this benchmark created on


Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.4.1/immutable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mori/0.2.9/mori.js"></script>

Setup

var imm_map = Immutable.fromJS({a:{b:{c:{d:{e:'test'}}}}}),
        imm_map2 = imm_map.updateIn(['a', 'b', 'c', 'd', 'e'], just('test2')),
        mori_map = mori.js_to_clj({a:{b:{c:{d:{e:'test'}}}}}),
        mori_map2 = mori.update_in(mori_map, ['a', 'b', 'c', 'd', 'e'], just('test2'));
    
    function just(v) {
        return function() {
           return v;
        };
    }

Test runner

Ready to run.

Testing in
TestOps/sec
mori deep set
mori.update_in(mori_map, ['a', 'b', 'c', 'd', 'e'], just('test2'));
ready
Immutable deep set
imm_map.updateIn(['a', 'b', 'c', 'd', 'e'], just('test2'));
ready
mori get
mori.get(mori_map, 'a');
ready
Immutable get
imm_map.get('a');
ready
mori equals (false)
mori.equals(mori_map, mori_map2);
ready
Immutable is (false)
Immutable.is(imm_map, imm_map2);
ready
mori equals (true)
mori.equals(mori_map, mori_map);
ready
Immutable is (false)
Immutable.is(imm_map, imm_map);
ready
Immutable deep set 2
imm_map.setIn(['a', 'b', 'c', 'd', 'e'], 'test2');
ready

Revisions

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