Python APIでの性能
memcachedのPython API(ftp://ftp.tummy.com/pub/python-memcached/)を利用して性能測定をしてみました。以下は、1KBの文字列を10000回setしたとき、getしたときに必要とした時間です。
operation | time(msec) |
---|---|
set | 1797 |
get | 2984 |
計測環境は以下の通り。
- クライアントもサーバも同一マシン。
- OS:Windows Vista
- CPU:Intel Core2 Duo T7500 2.20GHz
- Memory:2GB
- memcached:Windows版 version1.2.6
memcachedの起動オプションは以下の通り。
memcached.exe -p 11211 -m 64m
set計測は以下のプログラムを10回実行した平均値を取りました。
#!/usr/bin/env python # -*- coding: utf-8 -*- import time import memcache def get_message(kbytes): return "1234567890" * 100 * kbytes if __name__ == '__main__': # initialize mc = memcache.Client(['127.0.0.1:11211']) mc.flush_all() message_num = 10000 message_size = 1 message = get_message(message_size) # set start_time = time.time() for index in range(message_num): mc.set(str(index), message) end_time = time.time() # print progress time progress_time = end_time - start_time print 'messages: %s' % message_num print 'set time: %s' % progress_time
get計測は以下のプログラムを10回実行した平均値を取りました。
#!/usr/bin/env python # -*- coding: utf-8 -*- import time import memcache if __name__ == '__main__': # initialize mc = memcache.Client(['127.0.0.1:11211']) message_num = 10000 # get start_time = time.time() for index in range(message_num): message = mc.get(str(index)) end_time = time.time() # print progress time progress_time = end_time - start_time print 'messages: %s' % message_num print 'set time: %s' % progress_time
上記プログラムからも分かるように、正確には1KBより少し小さいメッセージを送っています。
他の言語のクライアントでも計測してみたいですね。スクリプト言語の割にかなり速度が出ているように見えます。Pythonが凄いのか、最近のスクリプト言語はこのくらいの速度が当たり前なのか、memcachedが凄いのか、比較してみないと分かりませんが、性能的には十分使える技術だと思います。