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
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
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
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
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