jschaf / esup

ESUP - Emacs Start Up Profiler
398 stars 22 forks source link

Emacs 26.1 + macos, suspicious profile #56

Open zaript opened 6 years ago

zaript commented 6 years ago

After running esup I get the following first line in profile:

Total User Startup Time: 0.321sec Total Number of GC Pauses: 0 Total GC Time: 0.000sec

However, Emacs clearly take longer to start up (about 2-3 seconds). Most of it after frame has been created.

Version info: GNU Emacs 26.1 (build 1, x86_64-apple-darwin14.5.0, NS appkit-1348.17 Version 10.10.5 (Build 14F2511)) of 2018-05-28

and

esup 20180506.1639 installed the Emacs StartUp Profiler (ESUP)

dotmilk commented 6 years ago

Same, I actually capture start time and end time to display my startup time, and I know mine takes at least 3 seconds however esup reports it as around half a second.

angrybacon commented 3 years ago

I'm using emacs-plus@27 with a similar experience. I'm using Org and tangle my configuration into ~/.emacs.d/dotemacs.el at startup so I tested the package with C-uM-xesup instead.

I get the following results:

Total User Startup Time: 0.025sec     Total Number of GC Pauses: 2     Total GC Time: 0.021sec

vc-git.elc:15  0.012sec   50%
(byte-code "\300\301!\210\302\303\304\305\306\307\310\311&\210\312\313\314\315\316DD\317\320\321\306\322&\210\312\323\314\315\324DD\325\320\326\306\327&\210\312\330\314\315\331DD\332\320\333\306\327&\210\312\334\314\315\335DD\336\306\307\320\337&\210\312\340\314\315\341DD\342\320\343\306\307&\210\312\344\314\315\345DD\346\320\347\306\327&\210\312\350\314\315\351DD\352\320\353\306\327&\210\312\354\314\315\355DD\356\320\337\306\357&\210\312\360\314\315\361DD\362\320\363\306\357&\207" [require cl-lib custom-declare-group vc-git nil "VC Git backend." :version "24.1" :group vc custom-declare-variable vc-git-diff-switches funcall function #[0 "\300\207" [t] 1] "String or list of strings specifying switches for Git diff under VC.\nIf nil, use the value of `vc-diff-switches'.  If t, use no switches." :type (choice (const :tag "Unspecified" nil) (const :tag "None" t) (string :tag "Argument String") (repeat :tag "Argument List" :value (#1="") string)) "23.1" vc-git-annotate-switches #[0 "\300\207" [nil] 1] "String or list of strings specifying switches for Git blame under VC.\nIf nil, use the value of `vc-annotate-switches'.  If t, use no switches." (choice (const :tag "Unspecified" nil) (const :tag "None" t) (string :tag "Argument String") (repeat :tag "Argument List" :value (#1#) string)) "25.1" vc-git-resolve-conflicts #[0 "\300\207" [t] 1] "When non-nil, mark conflicted file as resolved upon saving.\nThat is performed after all conflict markers in it have been\nremoved.  If the value is `unstage-maybe', and no merge is in\nprogress, then after the last conflict is resolved, also clear\nthe staging area." (choice (const :tag "Don't resolve" nil) (const :tag "Resolve" t) (const :tag "Resolve and maybe unstage all files" unstage-maybe)) vc-git-program #[0 "\300\207" [#2="git"] 1 #2#] "Name of the Git executable (excluding any arguments)." string vc-git-root-log-format #[0 "\300\207" [("%d%h..: %an %ad %s" "^\\(?:[*/\\| ]+ \\)?\\(?2: ([^)]+)\\)?\\(?1:[0-9a-z]+\\)..: \\(?3:.*?\\)[  ]+\\(?4:[0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\)" ((1 'log-view-message) (2 'change-log-list nil lax) (3 'change-log-name) (4 'change-log-date)))] 1] "Git log format for `vc-print-root-log'.\nThis should be a list (FORMAT REGEXP KEYWORDS), where FORMAT is a\nformat string (which is passed to \"git log\" via the argument\n\"--pretty=tformat:FORMAT\"), REGEXP is a regular expression\nmatching the resulting Git log output, and KEYWORDS is a list of\n`font-lock-keywords' for highlighting the Log View buffer." (list string string (repeat sexp)) vc-git-commits-coding-system #[0 "\300\207" [utf-8] 1] "Default coding system for sending commit log messages to Git.\n\nShould be consistent with the Git config value i18n.commitEncoding,\nand should also be consistent with `locale-coding-system'." (coding-system :tag "Coding system to encode Git commit logs") vc-git-log-output-coding-system #[0 "\300\207" [utf-8] 1] "Default coding system for receiving log output from Git.\n\nShould be consistent with the Git config value i18n.logOutputEncoding." (coding-system :tag "Coding system to decode Git log output") vc-git-grep-template #[0 "\300\207" [#3="git --no-pager grep -n <C> -e <R> -- <F>"] 1 #3#] "The default command to run for \\[vc-git-grep].\nThe following place holders should be present in the string:\n <C> - place to put the options like -i.\n <F> - file names and wildcards to search.\n <R> - the regular expression searched for." "27.1" vc-git-show-stash #[0 "\300\207" [t] 1] "How much of the git stash list to show by default.\nDefault t means all, otherwise an integer specifying the maximum\nnumber to show.  A text button is always shown allowing you to\ntoggle display of the entire list." (choice (const :tag "All" t) (integer :tag "Limit" :validate (lambda (widget) (unless (>= (widget-value widget) 0) (widget-put widget :error "Invalid value: must be a non-negative integer") widget))))] 8)

vc-git.elc:15  0.012sec   50%
(byte-code "\300\301!\210\302\303\304\305\306\307\310\311&\210\312\313\314\315\316DD\317\320\321\306\322&\210\312\323\314\315\324DD\325\320\326\306\327&\210\312\330\314\315\331DD\332\320\333\306\327&\210\312\334\314\315\335DD\336\306\307\320\337&\210\312\340\314\315\341DD\342\320\343\306\307&\210\312\344\314\315\345DD\346\320\347\306\327&\210\312\350\314\315\351DD\352\320\353\306\327&\210\312\354\314\315\355DD\356\320\337\306\357&\210\312\360\314\315\361DD\362\320\363\306\357&\207" [require cl-lib custom-declare-group vc-git nil "VC Git backend." :version "24.1" :group vc custom-declare-variable vc-git-diff-switches funcall function #[0 "\300\207" [t] 1] "String or list of strings specifying switches for Git diff under VC.\nIf nil, use the value of `vc-diff-switches'.  If t, use no switches." :type (choice (const :tag "Unspecified" nil) (const :tag "None" t) (string :tag "Argument String") (repeat :tag "Argument List" :value (#1="") string)) "23.1" vc-git-annotate-switches #[0 "\300\207" [nil] 1] "String or list of strings specifying switches for Git blame under VC.\nIf nil, use the value of `vc-annotate-switches'.  If t, use no switches." (choice (const :tag "Unspecified" nil) (const :tag "None" t) (string :tag "Argument String") (repeat :tag "Argument List" :value (#1#) string)) "25.1" vc-git-resolve-conflicts #[0 "\300\207" [t] 1] "When non-nil, mark conflicted file as resolved upon saving.\nThat is performed after all conflict markers in it have been\nremoved.  If the value is `unstage-maybe', and no merge is in\nprogress, then after the last conflict is resolved, also clear\nthe staging area." (choice (const :tag "Don't resolve" nil) (const :tag "Resolve" t) (const :tag "Resolve and maybe unstage all files" unstage-maybe)) vc-git-program #[0 "\300\207" [#2="git"] 1 #2#] "Name of the Git executable (excluding any arguments)." string vc-git-root-log-format #[0 "\300\207" [("%d%h..: %an %ad %s" "^\\(?:[*/\\| ]+ \\)?\\(?2: ([^)]+)\\)?\\(?1:[0-9a-z]+\\)..: \\(?3:.*?\\)[  ]+\\(?4:[0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\)" ((1 'log-view-message) (2 'change-log-list nil lax) (3 'change-log-name) (4 'change-log-date)))] 1] "Git log format for `vc-print-root-log'.\nThis should be a list (FORMAT REGEXP KEYWORDS), where FORMAT is a\nformat string (which is passed to \"git log\" via the argument\n\"--pretty=tformat:FORMAT\"), REGEXP is a regular expression\nmatching the resulting Git log output, and KEYWORDS is a list of\n`font-lock-keywords' for highlighting the Log View buffer." (list string string (repeat sexp)) vc-git-commits-coding-system #[0 "\300\207" [utf-8] 1] "Default coding system for sending commit log messages to Git.\n\nShould be consistent with the Git config value i18n.commitEncoding,\nand should also be consistent with `locale-coding-system'." (coding-system :tag "Coding system to encode Git commit logs") vc-git-log-output-coding-system #[0 "\300\207" [utf-8] 1] "Default coding system for receiving log output from Git.\n\nShould be consistent with the Git config value i18n.logOutputEncoding." (coding-system :tag "Coding system to decode Git log output") vc-git-grep-template #[0 "\300\207" [#3="git --no-pager grep -n <C> -e <R> -- <F>"] 1 #3#] "The default command to run for \\[vc-git-grep].\nThe following place holders should be present in the string:\n <C> - place to put the options like -i.\n <F> - file names and wildcards to search.\n <R> - the regular expression searched for." "27.1" vc-git-show-stash #[0 "\300\207" [t] 1] "How much of the git stash list to show by default.\nDefault t means all, otherwise an integer specifying the maximum\nnumber to show.  A text button is always shown allowing you to\ntoggle display of the entire list." (choice (const :tag "All" t) (integer :tag "Limit" :validate (lambda (widget) (unless (>= (widget-value widget) 0) (widget-put widget :error "Invalid value: must be a non-negative integer") widget))))] 8)

It might come from the fact that most of my packages are deferred with use-package and most are loaded with the after-init-hook but that wouldn't explain why the non-deferred packages don't appear in the results. What am I missing?