1

debug_toolbarは、フロントエンドとdjango-adminの両方に12個の信号から44個のレシーバーがあることを示しています。それは正常ですか?これによりパフォーマンスが低下しますか?あなたに合わせてチェック/修正すべきことはありますか?

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

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

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は、djangoタグ付けのサブクラスです

4

1 に答える 1

3

シグナルは同期しているため、呼び出されたリクエストの処理時間に影響します。したがって、パフォーマンスが影響を受けているかどうかは、それらの関数で何が行われているかによって異なります。

あなたの場合、あなたのフィールドからのモデルのインスタンス化/保存について多くのことが起こっているようです。

これは、これらすべての信号を接続するデフォルトの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の寸法を計算します。

しかし..私はしません。とにかくまだです。「時期尚早の最適化はすべての悪の根源である」ことを忘れないでください!

于 2012-02-14T17:14:49.290 に答える