[OS X TeX] Time penalty when using kpsewhich on mac os x?

jfbu jfbu at free.fr
Sat Oct 11 23:10:10 CEST 2014


Le 11 oct. 2014 à 23:02, Adam R. Maxwell <amaxwell at mac.com> a écrit :

> Jean-Francois,
> 
> I tried profiling kpsewhich, and it looks like the speed hit
> is almost entirely related to using locks (which getc(3)
> does by default). We ran into this years ago with BibDesk,
> and worked around it by using getc_unlocked(3), which is also
> in POSIX.
> 
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/getc_unlocked.html
> 
> Karl, can kpsewhich be compiled separately from TL? It'd be
> interesting to play with this (assuming it only uses a single
> thread, so getc_unlocked is safe).
> 
> To reproduce this, type the following in one Terminal and
> hit return:
> 
>    $ sample kpsewhich -wait -mayDie -e
> 
> In another Terminal, run the kpsewhich command:
> 
>    $ kpsewhich -var-value=TEXMFLOCAL
> 
> ###########

Adam, 

Here is what I get on my MBA under Mavericks

(full log sent to you off-list as it is a bit longish) 

$ sample kpsewhich -wait -mayDie -e
Waiting for 'kpsewhich' to appear...  kpsewhich appeared.
Sampling process 7941 for 10 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols...
Sample analysis of process 7941 written to file /tmp/kpsewhich_2014-10-11_230645_AByh.sample.txt

Analysis of sampling kpsewhich (pid 7941) every 1 millisecond
Process:         kpsewhich [7941]
Path:            /usr/local/texlive/2014/bin/x86_64-darwin/kpsewhich
Load Address:    0x100000000
Identifier:      kpsewhich
Version:         ???
Code Type:       X86-64
Parent Process:  bash [7887]

Date/Time:       2014-10-11 23:06:45.444 +0200
OS Version:      Mac OS X 10.9.5 (13F34)
Report Version:  7

Call graph:
    365 Thread_466167   DispatchQueue_1: com.apple.main-thread  (serial)
      365 ???  (in kpsewhich)  load address 0x100000000 + 0x874  [0x100000874]
        365 ???  (in kpsewhich)  load address 0x100000000 + 0x12cf  [0x1000012cf]
          365 ???  (in kpsewhich)  load address 0x100000000 + 0xd1e4  [0x10000d1e4]
            365 ???  (in kpsewhich)  load address 0x100000000 + 0x5b3e  [0x100005b3e]
              196 ???  (in kpsewhich)  load address 0x100000000 + 0x6930  [0x100006930]
              + 187 ???  (in kpsewhich)  load address 0x100000000 + 0x93b1  [0x1000093b1]
              + ! 91 getc  (in libsystem_c.dylib) + 55  [0x7fff90e7f2f2]
              + ! : 66 pthread_mutex_unlock  (in libsystem_pthread.dylib) + 60  [0x7fff91bb18f3]
              + ! : | 39 __mtx_droplock  (in libsystem_pthread.dylib) + 268,302,...  [0x7fff91bb13ca,0x7fff91bb13ec,...]
              + ! : | 27 OSAtomicCompareAndSwapLong$VARIANT$mp  (in libsystem_platform.dylib) + 8,0  [0x7fff8e42cbd4,0x7fff8e42cbcc]
              + ! : 11 pthread_mutex_unlock  (in libsystem_pthread.dylib) + 222,8,...  


Jean-François




More information about the macostex-archives mailing list