<gh_stars>1-10
#!/usr/bin/env python

import timeit


def cprofile_main():
    from pymongo import Connection
    connection = Connection()
    connection.drop_database('timeit_test')
    connection.disconnect()

    from mongoengine import Document, DictField, connect
    connect("timeit_test")

    class Noddy(Document):
        fields = DictField()

    for i in xrange(1):
        noddy = Noddy()
        for j in range(20):
            noddy.fields["key" + str(j)] = "value " + str(j)
        noddy.save()


def main():
    """
    0.4 Performance Figures ...

    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.86744189262
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    6.23374891281
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    5.33027005196
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    pass - No Cascade

    0.5.X
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.89597702026
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    21.7735359669
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    19.8670389652
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    pass - No Cascade

    0.6.X
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.81559205055
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    10.0446798801
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    9.51354718208
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    9.02567505836
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, force=True
    8.44933390617

    0.7.X
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.78801012039
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    9.73050498962
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    8.33456707001
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    8.37778115273
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, force=True
    8.36906409264
    """

    setup = """
from pymongo import Connection
connection = Connection()
connection.drop_database('timeit_test')
"""

    stmt = """
from pymongo import Connection
connection = Connection()

db = connection.timeit_test
noddy = db.noddy

for i in xrange(10000):
    example = {'fields': {}}
    for j in range(20):
        example['fields']["key"+str(j)] = "value "+str(j)

    noddy.insert(example)

myNoddys = noddy.find()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - Pymongo"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

    setup = """
from pymongo import Connection
connection = Connection()
connection.drop_database('timeit_test')
connection.disconnect()

from mongoengine import Document, DictField, connect
connect("timeit_test")

class Noddy(Document):
    fields = DictField()
"""

    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save()

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save(safe=False, validate=False)

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine, safe=False, validate=False"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)


    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save(safe=False, validate=False, cascade=False)

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save(force_insert=True, safe=False, validate=False, cascade=False)

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine, force=True"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

if __name__ == "__main__":
    main()

#!/usr/bin/env python

import timeit


def cprofile_main():
    from pymongo import Connection
    connection = Connection()
    connection.drop_database('timeit_test')
    connection.disconnect()

    from mongoengine import Document, DictField, connect
    connect("timeit_test")

    class Noddy(Document):
        fields = DictField()

    for i in xrange(1):
        noddy = Noddy()
        for j in range(20):
            noddy.fields["key" + str(j)] = "value " + str(j)
        noddy.save()


def main():
    """
    0.4 Performance Figures ...

    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.86744189262
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    6.23374891281
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    5.33027005196
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    pass - No Cascade

    0.5.X
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.89597702026
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    21.7735359669
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    19.8670389652
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    pass - No Cascade

    0.6.X
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.81559205055
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    10.0446798801
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    9.51354718208
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    9.02567505836
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, force=True
    8.44933390617

    0.7.X
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - Pymongo
    3.78801012039
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine
    9.73050498962
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False
    8.33456707001
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False
    8.37778115273
    ----------------------------------------------------------------------------------------------------
    Creating 10000 dictionaries - MongoEngine, force=True
    8.36906409264
    """

    setup = """
from pymongo import Connection
connection = Connection()
connection.drop_database('timeit_test')
"""

    stmt = """
from pymongo import Connection
connection = Connection()

db = connection.timeit_test
noddy = db.noddy

for i in xrange(10000):
    example = {'fields': {}}
    for j in range(20):
        example['fields']["key"+str(j)] = "value "+str(j)

    noddy.insert(example)

myNoddys = noddy.find()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - Pymongo"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

    setup = """
from pymongo import Connection
connection = Connection()
connection.drop_database('timeit_test')
connection.disconnect()

from mongoengine import Document, DictField, connect
connect("timeit_test")

class Noddy(Document):
    fields = DictField()
"""

    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save()

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save(safe=False, validate=False)

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine, safe=False, validate=False"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)


    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save(safe=False, validate=False, cascade=False)

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

    stmt = """
for i in xrange(10000):
    noddy = Noddy()
    for j in range(20):
        noddy.fields["key"+str(j)] = "value "+str(j)
    noddy.save(force_insert=True, safe=False, validate=False, cascade=False)

myNoddys = Noddy.objects()
[n for n in myNoddys] # iterate
"""

    print "-" * 100
    print """Creating 10000 dictionaries - MongoEngine, force=True"""
    t = timeit.Timer(stmt=stmt, setup=setup)
    print t.timeit(1)

if __name__ == "__main__":
    main()
#!/usr/bin/env python 0.4 Performance Figures ...      ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - Pymongo     3.86744189262     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine     6.23374891281     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False     5.33027005196     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False     pass - No Cascade      0.5.X     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - Pymongo     3.89597702026     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine     21.7735359669     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False     19.8670389652     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False     pass - No Cascade      0.6.X     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - Pymongo     3.81559205055     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine     10.0446798801     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False     9.51354718208     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False     9.02567505836     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, force=True     8.44933390617      0.7.X     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - Pymongo     3.78801012039     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine     9.73050498962     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False     8.33456707001     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False     8.37778115273     ----------------------------------------------------------------------------------------------------     Creating 10000 dictionaries - MongoEngine, force=True     8.36906409264 from pymongo import Connection connection = Connection() connection.drop_database('timeit_test') from pymongo import Connection connection = Connection()  db = connection.timeit_test noddy = db.noddy  for i in xrange(10000):     example = {'fields': {}}     for j in range(20):         example['fields']["key"+str(j)] = "value "+str(j)      noddy.insert(example)  myNoddys = noddy.find() [n for n in myNoddys] # iterate Creating 10000 dictionaries - Pymongo from pymongo import Connection connection = Connection() connection.drop_database('timeit_test') connection.disconnect()  from mongoengine import Document, DictField, connect connect("timeit_test")  class Noddy(Document):     fields = DictField() for i in xrange(10000):     noddy = Noddy()     for j in range(20):         noddy.fields["key"+str(j)] = "value "+str(j)     noddy.save()  myNoddys = Noddy.objects() [n for n in myNoddys] # iterate Creating 10000 dictionaries - MongoEngine for i in xrange(10000):     noddy = Noddy()     for j in range(20):         noddy.fields["key"+str(j)] = "value "+str(j)     noddy.save(safe=False, validate=False)  myNoddys = Noddy.objects() [n for n in myNoddys] # iterate Creating 10000 dictionaries - MongoEngine, safe=False, validate=False for i in xrange(10000):     noddy = Noddy()     for j in range(20):         noddy.fields["key"+str(j)] = "value "+str(j)     noddy.save(safe=False, validate=False, cascade=False)  myNoddys = Noddy.objects() [n for n in myNoddys] # iterate Creating 10000 dictionaries - MongoEngine, safe=False, validate=False, cascade=False for i in xrange(10000):     noddy = Noddy()     for j in range(20):         noddy.fields["key"+str(j)] = "value "+str(j)     noddy.save(force_insert=True, safe=False, validate=False, cascade=False)  myNoddys = Noddy.objects() [n for n in myNoddys] # iterate Creating 10000 dictionaries - MongoEngine, force=True