Simple bash script is slow to execute - appears to be time spent starting commands like ls
Thrall, Bryan
bryan.thrall@flightsafety.com
Wed Sep 2 19:00:00 GMT 2009
David Tazartes wrote on Wednesday, September 02, 2009 1:46 PM:
> Jeremy Bopp wrote:
>
> How about we try to boil this down a little further? Try running the
> following on your various systems and compare the results:
>
> time for n in $(seq 1 10000); do true; done
>
> I'm hopeful that this should help eliminate IO as a bottleneck in your
> comparisons. Maybe someone else has a better suggestion.
>
> If you still see a difference in performance of a similar magnitude as
> you do with the echo | cut case, this might argue for fork being your
> problem. I can't say whether or not what you're seeing is really
> expected for fork though. All I know is that fork is fairly slow in
> Cygwin. If it turns out that IO is the issue, I don't think I'll be
> much help, not that I'm much help to begin with here. ;-)
>
> It's also possible that you have BLODA on your laptop which could be
> interfering in some way. I think cygcheck is able to identify some of
> them for you. The problem reporting guidelines
> (http://cygwin.com/problems.html) contain information for running
> cygcheck which may help others identify typical problems.
>
> -----
>
> The true loop is only about 3 times slower on Cygwin than Linux. But:
"true"
> is a bash built-in, so there is no forking going on. So I'd argue this
> absolutely shows there is a forking problem. ("time true" and "time
echo hi"
> both give all 0's.)
>
> I also noticed that running "echo hi | c:\cygwin\bin\wc -l" just from
cmd
> seems to pause for a second or so. So perhaps I have just a problem
starting
> processes quickly in Vista.
>
> cygcheck didn't reveal anything. I looked at the BLODA list and I only
have
> Symantec Antivirus as mentioned earlier, but I already tried disabling
it to
> no effect.
You're right about true being built-in, but we still don't know from
your examples whether the problem is from forking or from IO. Try
replacing 'true' in Jeremy's loop with '/bin/true'. Comparison between
the two should give us an idea of the forking cost, without IO getting
in the way.
--
Bryan Thrall
FlightSafety International
bryan.thrall@flightsafety.com
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list