Re: [PATCH] Cygwin: Speed up mkimport
Mark Geisert writes: > + # Do two objcopy calls at once to avoid one system() call overhead > + system '(', $objcopy, '-R', '.text', $f, ')', '||', > + $objcopy, '-R', '.bss', '-R', '.data', "t-$f" and exit 1; That doesn't do what you think it does. It in fact increases the overhead since it'll start a shell that runs those two commands sand will even needlessly start the first objcopy in a subshell. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf rackAttack: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds
Re: [PATCH] Cygwin: Speed up mkimport
Previously, Mark Geisert wrote: Cut mkimport elapsed time in half by forking each iteration of the two time-consuming loops within. Only do this if more than one CPU is present. In the second loop, combine the two 'objdump' calls into one ^^^ That should say objcopy. The code is correct though. ..mark
[PATCH] Cygwin: Speed up mkimport
Cut mkimport elapsed time in half by forking each iteration of the two time-consuming loops within. Only do this if more than one CPU is present. In the second loop, combine the two 'objdump' calls into one system() invocation to avoid a system() invocation per iteration. --- winsup/cygwin/mkimport | 34 ++ 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/mkimport b/winsup/cygwin/mkimport index 2b08dfe3d..919dc305b 100755 --- a/winsup/cygwin/mkimport +++ b/winsup/cygwin/mkimport @@ -47,6 +47,9 @@ for my $sym (keys %replace) { $import{$fn} = $imp_sym; } +my $ncpus = `grep -c ^processor /proc/cpuinfo`; +my $forking = $ncpus > 1; # Decides if loops below should fork() each iteration + for my $f (keys %text) { my $imp_sym = delete $import{$f}; my $glob_sym = $text{$f}; @@ -56,25 +59,30 @@ for my $f (keys %text) { $text{$f} = 0; } else { $text{$f} = 1; - open my $as_fd, '|-', $as, '-o', "$dir/t-$f", "-"; - if ($is64bit) { - print $as_fd <