Fasd: 느린

에 λ§Œλ“  2013λ…„ 03μ›” 10일  Β·  11μ½”λ©˜νŠΈ  Β·  좜처: clvv/fasd

였늘 λ‚΄ 터미널을 ν”„λ‘œνŒŒμΌλ§ν•˜κ³  fasd 이 z 보닀 μƒλ‹Ήνžˆ λŠλ¦½λ‹ˆλ‹€.

zλŠ” . brew --prefix /etc/profile.d/z.sh 둜 λ‚΄ .zshrc에 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μœ ν–‰: eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)"

λ…μ μ μœΌλ‘œ ν™œμ„±ν™”λœ zprof λ₯Ό μ‚¬μš©ν•  λ•Œμ˜ κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

μœ ν–‰

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    3        1527.75   509.25   83.55%   1527.75   509.25   83.55%  _fasd_preexec
 2)    2         107.40    53.70    5.87%    107.40    53.70    5.87%  compaudit
 3)    3          47.98    15.99    2.62%     47.98    15.99    2.62%  precmd
 4)    1         153.86   153.86    8.41%     46.46    46.46    2.54%  compinit
 5)    6          39.73     6.62    2.17%     39.73     6.62    2.17%  _setup
 6)    3          27.72     9.24    1.52%     27.72     9.24    1.52%  preexec

지

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    2          44.18    22.09   48.69%     44.18    22.09   48.69%  compaudit
 2)    1          67.12    67.12   73.98%     22.95    22.95   25.29%  compinit
 3)    1          15.62    15.62   17.22%     15.62    15.62   17.22%  precmd
 4)    1           7.73     7.73    8.52%      7.73     7.73    8.52%  preexec
 5)    1           0.14     0.14    0.15%      0.14     0.14    0.15%  _z
 6)    1           0.26     0.26    0.29%      0.12     0.12    0.13%  _z_precmd

κ°„λ‹¨ν•œ 섀정을 μ‚¬μš©ν•˜λŠ” 것이 λ§Žμ€ 도움이 λ©λ‹ˆλ‹€: eval "$(fasd --init posix-alias zsh-hook)"

κ·ΈλŸ¬λ‚˜ z λΉ„ν•΄ μ—¬μ „νžˆ λŠλ¦½λ‹ˆλ‹€.

fasd (λ‹¨μˆœ)

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    3         316.83   105.61   47.56%    316.83   105.61   47.56%  _fasd_preexec
 2)    2         146.31    73.15   21.96%    146.31    73.15   21.96%  compaudit
 3)    1         228.45   228.45   34.29%     82.14    82.14   12.33%  compinit
 4)    3          36.87    12.29    5.53%     36.87    12.29    5.53%  precmd
 5)    3          35.78    11.93    5.37%     35.78    11.93    5.37%  _setup
 6)    3          24.23     8.08    3.64%     24.23     8.08    3.64%  preexec

fasdλŠ” λͺ¨λ“  폴더 λ³€κ²½μ—μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— μƒλ‹Ήνžˆ λˆˆμ— λ„κ²Œ λŠλ €μ§‘λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것이 μ—¬μ „νžˆ 관련성이 μžˆλŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ 이 μ½”λ“œ 쑰각을 μ‚¬μš©ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€.

eval "$(fasd --init posix-alias)" # Anything you want enabled BUT zsh-hook

_fasd_preexec() {
    { eval "fasd --proc \$(fasd --sanitize \$2)"; } &|
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec _fasd_preexec

λͺ¨λ“  11 λŒ“κΈ€

주된 μ΄μœ λŠ” fasd κ°€ preexec μ—μ„œ μ‹€ν–‰ 파일둜 두 번 호좜되기 λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. 이 μ˜€λ²„ν—€λ“œλŠ” fasd κ°€ zshμ—μ„œ μ œκ³΅λ˜λŠ” 경우 μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€( source =fasd λŠ” zshμ—μ„œ μž‘λ™ν•΄μ•Ό 함).

λ˜ν•œ 비ꡐλ₯Ό 더 κ³΅μ •ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ fasdλŠ” z의 데이터 ν˜•μ‹λ§Œ μ‚¬μš©ν•˜λ―€λ‘œ fasd와 zκ°€ λ™μΌν•œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ§€μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ½”λ“œλ₯Ό λ³΄μ•˜κ³  두 개의 μ‹€ν–‰ κ°€λŠ₯ν•œ ν˜ΈμΆœμ„ ν•˜λ‚˜λ‘œ μ••μΆ•ν•˜λŠ” 것이 κ°€λŠ₯ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. μ‹œκ°„μ΄ λ‚˜λ©΄ μ½”λ“œλ₯Ό 가지고 λ†€κ² μŠ΅λ‹ˆλ‹€.

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? fasdλ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άμ§€λ§Œ μ§€κΈˆμ€ λ„ˆλ¬΄ λŠλ¦½λ‹ˆλ‹€.

--sanitize sed regexλ₯Ό ν•¨μˆ˜μ— μΈλΌμΈν•˜λŠ” 것도 μ–΄λŠ ​​정도 도움이 λ˜μ§€λ§Œ μ—¬μ „νžˆ 맀우 λŠλ¦½λ‹ˆλ‹€.

.bash_profileμ—μ„œ eval "$(fasd --init auto)" λ₯Ό μ‚¬μš©ν•˜λ©΄ 속도가 λ„ˆλ¬΄ λŠλ €μ§‘λ‹ˆλ‹€.

@sindresorhus ν”„λ‘œνŒŒμΌλ§μ€ ν₯미둭게 λ“€λ¦½λ‹ˆλ‹€. 당신이 κ·Έκ²ƒμ„ν•˜λŠ” 방법을 곡유 마음?

@wamatt 문제 ν…μŠ€νŠΈμ— μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” λ˜ν•œ fasdκ°€ λ‚΄ 셸을 크게 λŠ¦μΆ”λŠ” 것을 κ΄€μ°°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
λ‚΄ .zshrc eval "$(fasd --init auto)" κ°€ μžˆμŠ΅λ‹ˆλ‹€.

OSXμ—μ„œ zsh 5.0.8 (x86_64-apple-darwin14.3.0) .

$ zprof

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    6         194,36    32,39   92,69%    194,36    32,39   92,69%  _fasd_preexec
 2)    6           5,96     0,99    2,84%      5,96     0,99    2,84%  _powerline_get_main_keymap_name
 3)    6           5,29     0,88    2,52%      5,29     0,88    2,52%  _powerline_set_true_keymap_name
 4)   24           2,40     0,10    1,15%      2,40     0,10    1,15%  url-quote-magic
 5)    6          11,82     1,97    5,64%      0,57     0,09    0,27%  _powerline_set_main_keymap_name
 6)    6           0,30     0,05    0,14%      0,30     0,05    0,14%  zle-line-finish
 7)    6           0,27     0,05    0,13%      0,27     0,05    0,13%  zle-line-init
 8)    6           0,19     0,03    0,09%      0,19     0,03    0,09%  omz_termsupport_precmd
 9)    6           0,18     0,03    0,09%      0,18     0,03    0,09%  omz_termsupport_preexec
10)    6           0,09     0,02    0,04%      0,09     0,02    0,04%  _powerline_set_jobnum
11)    6           0,06     0,01    0,03%      0,06     0,01    0,03%  omz_termsupport_cwd

-----------------------------------------------------------------------------------

 1)    6         194,36    32,39   92,69%    194,36    32,39   92,69%  _fasd_preexec

2017년에도 μ—¬μ „νžˆ λŠλ¦¬λ‹€ :)

속도 μ €ν•˜κ°€ fasdλ₯Ό μ„€μΉ˜ν•œ ν›„ κ°€μž₯ λ¨Όμ € μ•Œμ•„μ°¨λ¦° κ²ƒμ΄μ—ˆκΈ° λ•Œλ¬Έμ— 저도 μ•½κ°„μ˜ ν”„λ‘œνŒŒμΌλ§μ„ ν–ˆμŠ΅λ‹ˆλ‹€.

κΈ°λ³Έ ~/.zshrc

$ time (for i in {1..20}; do zsh -ic 'exit'; done)

================
CPU 87%
user    1.913
system  0.880
total   3.207

z: source /usr/share/z/z.sh

$ time (for i in {1..20}; do zsh -ic 'exit'; done)

================
CPU 87%
user    1.837
system  0.970
total   3.213

μœ ν–‰: eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)"

$ time (for i in {1..20}; do zsh -ic 'exit'; done)

================
CPU 83%
user    2.207
system  1.123
total   3.993

λ”°λΌμ„œ zλŠ” < 1msλ₯Ό μΆ”κ°€ν•˜κ³  fasdλŠ” 39.3msλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

이것이 μ—¬μ „νžˆ 관련성이 μžˆλŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ 이 μ½”λ“œ 쑰각을 μ‚¬μš©ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€.

eval "$(fasd --init posix-alias)" # Anything you want enabled BUT zsh-hook

_fasd_preexec() {
    { eval "fasd --proc \$(fasd --sanitize \$2)"; } &|
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec _fasd_preexec

μ—¬κΈ°μ—μ„œ
주된 μ΄μœ λŠ” fasd κ°€ preexec μ—μ„œ μ‹€ν–‰ 파일둜 두 번 호좜되기 λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. 이 μ˜€λ²„ν—€λ“œλŠ” fasd κ°€ zshμ—μ„œ μ œκ³΅λ˜λŠ” 경우 μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€( source =fasd λŠ” zshμ—μ„œ μž‘λ™ν•΄μ•Ό 함).

μ†ŒμŠ€ μ„€λͺ…μ˜ = κ°€ μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

이것이 μ—¬μ „νžˆ 관련성이 μžˆλŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ 이 μ½”λ“œ 쑰각을 μ‚¬μš©ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€.

eval "$(fasd --init posix-alias)" # Anything you want enabled BUT zsh-hook

_fasd_preexec() {
    { eval "fasd --proc \$(fasd --sanitize \$2)"; } &|
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec _fasd_preexec

μ•„λž˜μ— μžˆλŠ” zsh --init zsh-hook 의 좜λ ₯을 μ‚¬μš©ν•˜λ©΄ μ„±λŠ₯ 차이가 보이지 μ•ŠμŠ΅λ‹ˆλ‹€.
관련성이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ μΊμ‹œ νŒŒμΌμ— μ•„λž˜ 캑처λ₯Ό μ €μž₯ν•œ λ‹€μŒ 좜λ ₯에 λŒ€ν•΄ eval λ₯Ό μˆ˜ν–‰ν•˜λŠ” λŒ€μ‹  μ†ŒμŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

# add zsh hook
_fasd_preexec() {
  { eval "fasd --proc $(fasd --sanitize $1)"; } >> "/dev/null" 2>&1
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec _fasd_preexec
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰