On Fri, Sep 28, 2018 at 2:37 PM Dave Ulrick <d-ulrick(a)comcast.net> wrote:
Update:
> $ time cat infile >outfile
>
> If 'infile' is on the order of 140 MB, 'time' might show something
as
low as:
>
> real 0m0.146s
> user 0m0.000s
> sys 0m0.109s
> CPU % 74.29
>
> or as high as:
>
> real 0m0.328s
> user 0m0.000s
> sys 0m0.109s
> CPU % 33.31
>
> If 'outfile' doesn't exist, the 'cat' runs much more quickly:
>
> real 0m0.082s
> user 0m0.000s
> sys 0m0.081s
> CPU % 99.77
When an existing file is truncated, which the shell does when you use
stdout
redirection, all the blocks that were in it have to be moved to the
file system's free block list. Exactly what happens there may depend on
what kind of file system you are using, but it is extra work that doesn't
have to be done if you are creating a new file, which may explain the time
difference.
--Greg