GAEでwebappを使った場合とDjangoを使った場合のパフォーマンスを計測してみた

フレームワーク使うとモジュール等の読み込みでステップが増え、その分レスポンスが遅れます。これは必然です。

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

  1. 46ms
  2. 39ms
  3. 32ms
  4. 37ms
  5. 32ms

Django

  1. 39ms
  2. 33ms
  3. 32ms
  4. 32ms
  5. 44ms

大して変わんないという、驚きの結果でした。本番環境だとキャッシュが効くからフレームワークの重さなんて関係なくなるんですかね。これなら「多機能フレームワークは重いから」っていう理由でマイクロフレームワークを選択することはないかと。まぁこれだけの計測で結論出すのは尚早だとは思いますが。

webappはセッション使えないしFormもないので、そのへんの機能必要なのであればDjangoかな。まぁ速度変わらないのであれば全部Djangoでもいいんですけどね。あ、ちなみにDjangoは以前紹介したGoogle App Engine Helper for Djangoは使用しないで計測しました。