私はいつも Python のtimeit
ライブラリを使って小さな Python プログラムの時間を計っています。今、私は Django アプリを開発していますが、Django 関数、特にクエリの時間を計る方法を考えていました。
たとえばdef index(request)
、インデックス ページをロードするときに、views.py にさまざまな処理を行う があります。timeit
既存の関数をあまり変更せずに、この特定の関数の時間を計るにはどうすればよいですか?
django プロジェクトがデバッグ中の場合は、次を使用してデータベース クエリ (および時間) を確認できます。
>>> from django.db import connection
>>> connection.queries
これが関数をプロファイリングする必要性を満たさないことはわかっていますが、クエリの部分に役立つことを願っています!
あなたが得ることができる最良の方法は、デバッグツールバーを使用することです。また、クエリの最適化のためのいくつかの追加機能を取得し、データベースクエリを最適化するのに役立ちます.
ここに別の解決策があります. を使用できますconnection.queries
. これは、コマンドの直前に実行されたコマンドに対して作成された SQL コマンドを返しますconnect.queries
。を使用して前のクエリの時間を取得した後、reset_queries を実行できますreset_queries()
。使用reset_queries()
は必須ではありません。
Deviceという名前のモデルがあるとします。次のようにクエリ時間を測定できます。
>>> from django.db import connection, reset_queries
>>> from appname.models import Device
>>> devices = Device.objects.all()
>>> connection.queries
>>> reset_queries()