フレームワーク使うとモジュール等の読み込みでステップが増え、その分レスポンスが遅れます。これは必然です。
GoogleAppEngine(GAE)でwebappとDjangoを使った場合、どっちが速いのか。多機能になればなるほど遅くなりそうだから当然Djangoの方が遅いだろうが、どれくらいの差があるものか検証してみました。
webapp
def get(self):
path = os.path.join(os.path.dirname(__file__), ‘index.html’)
self.response.out.write(template.render(path, {‘now’:datetime.datetime.now() }))
Django
def index(request):
return render_to_response(‘index.html’, {‘now’: datetime.datetime.now() })
両方共テンプレートに現在時刻を書き出すだけ。いちいちテンプレートのパスを指定してるwebappが不利かな?それぞれ本番環境で5回ずつ計測(ApacheBench)して結果(Time per request、mean)は、
webapp
- 46ms
- 39ms
- 32ms
- 37ms
- 32ms
Django
- 39ms
- 33ms
- 32ms
- 32ms
- 44ms
大して変わんないという、驚きの結果でした。本番環境だとキャッシュが効くからフレームワークの重さなんて関係なくなるんですかね。これなら「多機能フレームワークは重いから」っていう理由でマイクロフレームワークを選択することはないかと。まぁこれだけの計測で結論出すのは尚早だとは思いますが。
webappはセッション使えないしFormもないので、そのへんの機能必要なのであればDjangoかな。まぁ速度変わらないのであれば全部Djangoでもいいんですけどね。あ、ちなみにDjangoは以前紹介したGoogle App Engine Helper for Djangoは使用しないで計測しました。