diff --git a/benchmark/addressbook.capnp.bytes.py b/benchmark/addressbook.capnp.bytes.py new file mode 100644 index 0000000..2f126e3 --- /dev/null +++ b/benchmark/addressbook.capnp.bytes.py @@ -0,0 +1,54 @@ +from __future__ import print_function +import os +import capnp + +this_dir = os.path.dirname(__file__) +addressbook = capnp.load(os.path.join(this_dir, 'addressbook.capnp')) + +print = lambda *x: x + + +def writeAddressBook(f): + addressBook = addressbook.AddressBook.new_message() + people = addressBook.init('people', 2) + + alice = people[0] + alice.id = 123 + alice.name = 'Alice' + alice.email = 'alice@example.com' + alicePhones = alice.init('phones', 1) + alicePhones[0].number = "555-1212" + alicePhones[0].type = 'mobile' + + bob = people[1] + bob.id = 456 + bob.name = 'Bob' + bob.email = 'bob@example.com' + bobPhones = bob.init('phones', 2) + bobPhones[0].number = "555-4567" + bobPhones[0].type = 'home' + bobPhones[1].number = "555-7654" + bobPhones[1].type = 'work' + + msg_bytes = addressBook.to_bytes() + f.write(msg_bytes) + +def printAddressBook(msg_bytes): + addressBook = addressbook.AddressBook.from_bytes(msg_bytes) + + for person in addressBook.people: + print(person.name, ':', person.email) + for phone in person.phones: + print(phone.type, ':', phone.number) + print() + + +if __name__ == '__main__': + for i in range(10000): + f = open('example', 'w') + writeAddressBook(f) + + f = open('example', 'r') + printAddressBook(f.read()) + +os.remove('example') diff --git a/benchmark/addressbook.capnp.py b/benchmark/addressbook.capnp.py index 8fb91f1..8d0cdf3 100644 --- a/benchmark/addressbook.capnp.py +++ b/benchmark/addressbook.capnp.py @@ -8,9 +8,8 @@ addressbook = capnp.load(os.path.join(this_dir, 'addressbook.capnp')) print = lambda *x: x -def writeAddressBook(fd): - message = capnp.MallocMessageBuilder() - addressBook = message.initRoot(addressbook.AddressBook) +def writeAddressBook(f): + addressBook = addressbook.AddressBook.new_message() people = addressBook.init('people', 2) alice = people[0] @@ -31,12 +30,11 @@ def writeAddressBook(fd): bobPhones[1].number = "555-7654" bobPhones[1].type = 'work' - capnp.writePackedMessageToFd(fd, message) + addressBook.write(f) -def printAddressBook(fd): - message = capnp.PackedFdMessageReader(f.fileno()) - addressBook = message.getRoot(addressbook.AddressBook) +def printAddressBook(f): + addressBook = addressbook.AddressBook.read(f) for person in addressBook.people: print(person.name, ':', person.email) @@ -48,9 +46,9 @@ def printAddressBook(fd): if __name__ == '__main__': for i in range(10000): f = open('example', 'w') - writeAddressBook(f.fileno()) + writeAddressBook(f) f = open('example', 'r') - printAddressBook(f.fileno()) + printAddressBook(f) os.remove('example')