2012-02-14 23 views
0

debug_toolbarはフロントエンドとdjango-adminの両方の12個のシグナルから44個のレシーバを持っていることを示しています。それは普通ですか?これはパフォーマンスを低下させますか?あなたがチェック/修正すべきことはありますか?Django:多くのシグナルがパフォーマンスを低下させますか?

私はpinaxで何かを台無しにしているかもしれませんが、繰り返すようなクエリもたくさんあることがわかりました。 (チェックされ、クエリがOKであるように見える)

これは、ツールバーの出力です:

class_prepared class setup_join_cache, ensure_default_manager, do_pending_lookups, prep_localized_datetime 
connection_created connection 
got_request_exception request _rollback_on_exception 
post_delete instance, using 
post_init instance TagAutocompleteTagItField._update, TagAutocompleteTagItField._update, ImageField.update_dimension_fields, ImageField.update_dimension_fields, ImageField.update_dimension_fields, TagAutocompleteTagItField._update, TagAutocompleteTagItField._update, TagAutocompleteTagItField._update, ImageField.update_dimension_fields, ImageField.update_dimension_fields, ImageField.update_dimension_fields, TagAutocompleteTagItField._update, TagAutocompleteTagItField._update, TagAutocompleteTagItField._update, ImageField.update_dimension_fields, ImageField.update_dimension_fields 
post_save instance, created, using, raw create_account, superuser_email_address, create_profile, signup_code_result_save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save, TagAutocompleteTagItField._save 
post_syncdb app, verbosity, interactive, class, created_models 
pre_delete instance, using 
pre_init instance, args, kwargs GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init, GenericForeignKey.instance_pre_init 
pre_save instance, using, raw  
request_finished  close_connection 
request_started  reset_queries 

TagAutocompleteTagItFieldはジャンゴ・タギング

答えて

1

信号のサブクラスでは同期しているので、彼らは貢献します呼び出された要求の処理時間に相当します。パフォーマンスが影響を受けるかどうかは、これらの機能で何が行われているかによって異なります。

あなたのケースでは、モデルのインスタンス化/保存がフィールドから来ているようです。

これは、すべての信号を正しく接続するデフォルトのdjango ImageFieldではありませんか?あなたのプロジェクトには、フィールドごとに信号が接続されているようです。

いずれにしても、それらのTagAutocompleteTagItFieldとImageFieldsが信号のほとんどを追加しているようです。本当に悪いことではないはずです

tag_fields = [field for field in c._meta.fields if type(field) == TagAutocompleteTagItField] 

if tag_fields: 
    # Do stuff 

:これらのフィールドを持っていないモデルのためのオーバーヘッドは、試合のためにモデルの各フィールドをチェックする線に沿ってのようなものになります。

これらのフィールドが1トンあれば、それらのTagAutocompleteTagItFieldおよびImageField信号を無効にしてテストする価値があります。それがドレインの場合は、例えば、ImageFieldのディメンジョンを計算するなど、シグナルのどこかでロジックの一部を移動できるかどうかを調べます。

しかし、私はそうではありません。とにかくまだ。 「時期尚早の最適化はすべての悪の根源です」と覚えておいてください!

+0

あなたの答えに感謝します。私は自分の設定に何か問題があるかどうかを理解しようとしています。私はまだ信号を使用していません...私は正しくないものを書いたことに気付きました。私は12の信号から44の受信機を持っています。それはどういう意味ですか?私はこれを追加するために私の質問を編集します。 – nemesisdesign

+0

私はいくつかの詳細について質問を編集しました。 – nemesisdesign

+1

これらのフィールドは、おそらくそれぞれ起動時にシグナルハンドラを追加しています。 Djangoは同じシグナルハンドラを複数回登録する際に問題がありません。したがって、各フィールドが登録されていれば、結果が得られます。私はピンナックスを使用していないので、私はもっと助けてはいけません。私は心配しないだろう! –

関連する問題