But .... ,in *this example* the elapsed is the same ( I know, I know, 51 calls vs. 53, without "cat" is more scalable :)). $ rm TEST.txt $ truss -c cat test.txt | tr "[:lower:]" "[:upper:]" > TEST.txt syscall seconds calls errors _exit .00 1 read .00 1 write .00 1 open .00 4 close .00 6 brk .00 2 stat .00 9 6 fstat .00 4 execve .00 1 mmap .00 10 munmap .00 3 memcntl .00 2 llseek .00 4 resolvepath .00 1 mmap64 .00 1 fstat64 .00 2 open64 .00 1 ------- ------ ---- sys totals: .00 53 6 usr time: .00 elapsed: .02 $ rm TEST.txt $ truss -c tr "[:lower:]" "[:upper:]" < test.txt > TEST.txt syscall seconds calls errors _exit .00 1 read .00 2 write .00 1 open .00 4 close .00 4 brk .00 6 stat .00 9 6 fstat .00 4 ioctl .00 2 2 execve .00 1 mmap .00 10 munmap .00 2 memcntl .00 1 llseek .00 1 resolvepath .00 1 fstat64 .00 2 ------- ------ ---- sys totals: .00 51 8 usr time: .00 elapsed: .02 Regards, Dimitre Radoulov