Mail Archives: djgpp-workers/2003/01/30/15:24:41
> Date: Thu, 30 Jan 2003 21:59:38 +0100
> From: Laurynas Biveinis <laurynas DOT biveinis AT mif DOT vu DOT lt>
>
> -----------------------------------------------
> 0.00 0.02 305/24148 opendir [216]
> 0.01 0.11 1801/24148 go32_exec <cycle 4> [55]
> 0.01 0.12 2057/24148 stat [54]
> 0.03 0.23 3914/24148 __chdir [99]
> 0.04 0.32 5268/24148 __open [63]
> 0.04 0.32 5354/24148 __access [76]
> 0.04 0.33 5449/24148 __solve_dir_symlinks [103]
> [40] 0.3 0.17 1.44 24148 __solve_symlinks [40]
> 0.11 0.97 114700/116604 __internal_readlink [53]
> 0.11 0.15 114700/114700 advance [116]
> 0.05 0.00 138848/3295731 strcpy [45]
> 0.04 0.00 85143/3696692 strlen [41]
> 0.02 0.00 24148/253548 strpbrk [135]
> 0.00 0.00 57/32298 __djgpp_exception_processor <cycle 5> [52]
> -----------------------------------------------
>
> Since most of the paths passed to __solve_symlinks are not
> symlinks, IMHO it is reasonable to make a shortcut and check
> that in advance at the very beginning of __solve_symlinks, thus
> saving a lot of __internal_readlink calls, which do disk I/O. It
> is impossible to catch all cases of non-symlinks cheaply due to
> /dev/ stuff, FSEXT and so on. So I came up with a patch below,
> which handles only simple cases of non-symlinks, nevertheless
> lots of them :) With this patch the callgraph above looks like this:
>
> -----------------------------------------------
> 0.00 0.02 305/24155 opendir [224]
> 0.02 0.10 1801/24155 go32_exec <cycle 4> [54]
> 0.03 0.12 2059/24155 stat [52]
> 0.05 0.22 3914/24155 __chdir [88]
> 0.07 0.30 5268/24155 __open [62]
> 0.07 0.30 5355/24155 __access [82]
> 0.08 0.31 5453/24155 __solve_dir_symlinks [97]
> [40] 0.3 0.33 1.35 24155 __solve_symlinks [40]
> 0.05 1.00 86360/88266 __internal_readlink [53]
> 0.11 0.10 62205/62205 advance [124]
> 0.04 0.00 86360/3246148 strcpy [42]
> 0.04 0.00 56026/3645530 strlen [27]
> 0.01 0.00 13207/137617 strpbrk [186]
> 0.00 0.00 1/35745 __djgpp_exception_processor <cycle 5> [41]
> -----------------------------------------------
>
> So, is the patch below worth it?
Ahm, sorry, but where are the differences between these two graphs
that we are supposed to look at to answer your question? To me, they
both look almost identical.
I do support any simple changes that minimize the number of files we
need to open and read.
> On a unrelated note, why does OpenBSD with Pentium MMX 200 Mhz and
> 16 MB RAM run configure scripts *much* faster than DJGPP on my desktop
> Pentium II 375 Mhz 192 RAM with W2K ?
Probably because pipes and `command` substitution goes through memory
instead of disk files.
- Raw text -