def setUp(self): self.client = Elevator(timeout=10) self._bootstrap_db()
def test_elevator_single_read(n): for i in xrange(n): db.Get(str(i)) @timeit def test_elevator_multi_write(n): with WriteBatch() as batch: for i in xrange(n): batch.Put(str(i), str(i)) if __name__ == '__main__': n = 100000 db = Elevator() test_elevator_single_write(n) test_elevator_single_read(n) test_elevator_multi_write(n) """ # tcp # elevator -c config/elevator.conf -w 8 'test_elevator_single_write' args: (100000,) 57.43 sec 'test_elevator_single_read' args: (100000,) 64.16 sec 'test_elevator_multi_write' args: (100000,) 0.51 sec # tcp # elevator -c config/elevator.conf -w 16 'test_elevator_single_write' args: (100000,) 65.89 sec 'test_elevator_single_read' args: (100000,) 63.12 sec 'test_elevator_multi_write' args: (100000,) 0.50 sec
weibos = db.MGet(weibo_ids) # weibos = [msgpack.unpackb(weibo) if weibo else None for weibo in weibos] weibos = [json.loads(weibo) if weibo else None for weibo in weibos] return weibos def test_rw(n): weibos_from_mongo = load_weibos_from_mongo(n) elevator_multi_write(weibos_from_mongo) weibo_ids = [str(weibo['id']) for weibo in weibos_from_mongo] weibos_from_elevator = elevator_multi_read(weibo_ids) for i in xrange(len(weibos_from_mongo)): if weibos_from_mongo[i] != weibos_from_elevator[i]: print '** ' * 10, i if __name__ == '__main__': mongo = _default_mongo(usedb='master_timeline') db = Elevator(timeout=1000) db.createdb('testdb') db.connect('testdb') test_rw(10000) db.dropdb('testdb') """ load 100000 weibos 'load_weibos_from_mongo' args: 7.71 sec 'elevator_multi_read' args: 14.73 sec 结论是elevator并不足以投入prod使用 """