On Mon, 11 Dec 2006, Marco Costalba wrote: > > These are tipical values (warm cache): > > $ time git rev-list --header --boundary --parents --topo-order HEAD | cat > /dev/null > 3.67user 0.36system 0:04.29elapsed 93%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+18033minor)pagefaults 0swaps That's not timing what I asked. That's just timing the "git-rev-list". You need to time the "cat" part too. Either use a script, or do something like time sh -c "git-rev-list ... | cat > /dev/null". > $ time git rev-list --header --boundary --parents --topo-order HEAD > > /tmp/tmp.txt; cat /tmp/tmp.txt > /dev/null > 3.44user 0.28system 0:03.74elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+18033minor)pagefaults 0swaps Again - you're only timing the _writer_, not the "cat" at all. > For some reason the CPU *never* goes up 93% with pipe (while it's easy > in the other two cases) That's because you're only timing 93% of the work (ignoring the "cat" part), and in the other cases you're ignoring the "cat" (that happens _afterwards_, not concurrently) entirely. > OK. I just don't understand how after waiting 100ms I get only 60KB > and stay in the loop only one cycle instead of reading, That's because the _writer_ will block. It notices that the reader cannot read ass fast as it can write, so it blocks when its buffers fill up. If you want to be fast, you need to be fast at reading. It's that simple. Linus - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html