SORU
20 ŞUBAT 2009, Cuma


Profil yaramazlık Emacs Lisp için ipuçları?

Ben Özelleştirme Bir sürü Emacs. Son zamanlarda, benim için bir şey ekledim .ara sıra benim CPU mandal o emacs yapılandırma 100%, ama gerçekten ne olduğunu bilmiyorum.

Eğer C-g basarsam defalarca, sonunda bir mesaj yollayacağımaşağıdaeğer emacs tamamen iptal etmek istersem eğer benim dosyaları otomatik kaydetmek istiyorsanız bana soran minibuffer. Eğer hayır demek ve basılması C-g tutmaya devam edersem, sonunda normal olarak emacs çalışan dönebilirim. Bir saat kadar sonra yine olacak.

Benim gibi, son zamanlarda ekledik çeşitli şeyler dışarı yorum, emacs yeniden, suçlu daraltmak için denemeye devam edebilirdim, ama yavaş ilerliyor.

Doğrudan emacs lisp fonksiyonu CPU hogging ne olduğunu anlamaya profil edebilirim bir yolu var mı?

CEVAP
20 ŞUBAT 2009, Cuma


Emacs ne bulabilirsiniz böylece t debug-on-quit ayar önerisi iyiydi. Tek bir örnek ile profil örnekleme biçimi olarak düşünebilirsiniz: genellikle tek bir örnek yeterlidir.


Güncelleme:Sürüm 24.3, Emacs ile başlayan içeririkiprofilciler. ** 4 ve elp.el (eski) açıklamak bir profiler (yeni) örnekleme profiler var.

Örnekleme profiler documented here. Oldukça basit bir kullanımı var:

Profil oluşturma başlamak için, tip 6**. İşlemci kullanımı, bellek kullanımı, ya da her ikisi tarafından profil seçebilirsiniz. Biraz iş yaptıktan sonra, tip 7* *profil için seçtiğiniz her kaynak için özet bir tampon görüntülemek için. Profil oluşturma işlemini bitirdiğinizde, tip 8**.

İşte bir örnek, ben korumak Perforce/Emacs integration cpu mem profilcisi çıktı. where the CPU time and memory use is coming from öğrenmek için en üstteki fonksiyon (progn) büyüttüm.

Function                                            Bytes    %
- progn                                        26,715,850  29%
  - let                                        26,715,850  29%
    - while                                    26,715,850  29%
      - let                                    26,715,850  29%
        - cond                                 26,715,850  29%
          - insert                             26,715,850  29%
              c-after-change                   26,713,770  29%
              p4-file-revision-annotate-links       2,080   0%
  let                                          20,431,797  22%
  call-interactively                           12,767,261  14%
  save-current-buffer                          10,005,836  11%
  while                                         8,337,166   9%
  p4-annotate-internal                          5,964,974   6%
  p4-annotate                                   2,821,034   3%
  let*                                          2,089,810   2%

Suçlu CPU bir sürü locally binding inhibit-modification-hooks to t around this code zaman ve bellek kurtarabilirim gibi görünüyor yani 12**, olduğunu görebilirsiniz.


Ayrıca Emacs Lisp Profiler kullanabilirsiniz. Bu oldukça altında belgelenmiş: okumak zorundasın yorum elp.el ayrıntılar, ama temel olarak çalıştırın elp-instrument-package açmak için profil oluşturma için tüm fonksiyonları ile belirli bir önek ve sonra elp-results sonuçları görmek için.

İşte M-x elp-instrument-package RET c- RET C 4.000 hatları fontifying, yazıp elp-results (ve ara hesaba göre sırala elp-sort-by-function kullanarak) çalıştırdıktan sonra: bazı tipik çıktı

Function Name                  Call Count  Elapsed Time  Average Time
=============================  ==========  ============  ============
c-skip-comments-and-strings    107         0.0           0.0
c-valid-offset                 78          0.0           0.0
c-set-offset                   68          0.031         0.0004558823
c-end-of-macro                 52          0.0           0.0
c-neutralize-CPP-line          52          0.0           0.0
c-font-lock-invalid-string     20          0.0           0.0
c-set-style-1                  19          0.031         0.0016315789
...

Özellikle senin durumunda profiler hatalı olduğunu bilmiyorsun çünkü hemen yardım etmiyor. Ama eğer bir tahmin (veya debug-on-quit bunu bulmak için kullanın) eğer profiler ayrıntılı bir şekilde sorunu teşhis yardımcı olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Россия

    Google Ро

    9 Temmuz 2007
  • kindlechatmail

    kindlechatma

    25 AĞUSTOS 2010
  • Willie D.

    Willie D.

    16 Aralık 2006