예제 #1
0
 def capnpfile(self, tmpdir_factory):
     tmpdir = tmpdir_factory.mktemp('capnpfile')
     tmpfile = tmpdir.join('mycapnpfile')
     obj = get_obj(support.Capnpy)
     with tmpfile.open('wb') as f:
         for i in range(self.N):
             obj.dump(f)
     return tmpfile
예제 #2
0
 def test_dumps(self, schema, benchmark):
     if schema.__name__ != 'Capnpy':
         pytest.skip('N/A')
     #
     def dumps_N(obj):
         myobjs = (obj, obj)
         res = 0
         for i in range(self.N):
             obj = myobjs[i%2]
             res = obj.dumps()
         return res
     #
     obj = get_obj(schema)
     res = benchmark(dumps_N, obj)
     assert type(res) is str
예제 #3
0
 def test_list(self, schema, benchmark):
     code = Code()
     code.global_scope.N = self.N
     code.ww("""
         def new_and_sum(MyStructContainer, items):
             res = 0
             for i in range({N}):
                 obj = MyStructContainer(items)
                 res += 1
             return res
     """)
     code.compile()
     new_and_sum = code['new_and_sum']
     items = [get_obj(schema)] * 10
     res = benchmark(new_and_sum, schema.MyStructContainer, items)
     assert res == self.N
예제 #4
0
 def test_copy_buffer(self, schema, benchmark):
     # this is not really a dumps, but it is used as a baseline to compare
     # the performance
     if schema.__name__ != 'Capnpy':
         pytest.skip('N/A')
     #
     def dumps_N(obj):
         myobjs = (obj, obj)
         res = 0
         for i in range(self.N):
             obj = myobjs[i%2]
             res = obj._seg.buf[:]
         return res
     #
     obj = get_obj(schema)
     res = benchmark(dumps_N, obj)
     assert type(res) is str
예제 #5
0
 def test_dumps_not_compact(self, schema, benchmark):
     if schema.__name__ != 'Capnpy':
         pytest.skip('N/A')
     #
     def dumps_N(obj):
         myobjs = (obj, obj)
         res = 0
         for i in range(self.N):
             obj = myobjs[i%2]
             res = obj.dumps()
         return res
     #
     obj = get_obj(schema)
     container = schema.MyStructContainer(items=[obj, obj])
     obj0 = container.items[0]
     assert not obj0._is_compact()
     res = benchmark(dumps_N, obj0)
     assert type(res) is str