http://www.perlmonks.org?node_id=928374


in reply to File::Copy or system

I don't know anything about the security aspect of it, but I was curious about which one was faster, so I ran a benchmark...

Copying about 1.5MB:

Benchmark: running File::Copy::cp($a, $b), system('cp', $a, $b) for at + least 3 CPU seconds... File::Copy::cp($a, $b): 4 wallclock secs ( 0.17 usr + 3.18 sys = 3. +35 CPU) @ 339.70/s (n=1138) system('cp', $a, $b): 29 wallclock secs ( 0.13 usr 3.21 sys + 1.43 c +usr 24.26 csys = 29.03 CPU) @ 965.27/s (n=3224)

I'd like to admit that I don't quite know how to parse the results. It looks like the system command incurs a 1.43 cusr and 24.26 csys penalty--what is that?

Replies are listed 'Best First'.
Re^2: File::Copy or system
by Marshall (Canon) on Oct 03, 2011 at 23:58 UTC
    File::Copy will be a native port and will expressed in terms of 'C' calls to the underlying O/S functions. 'C' functions will be called via .DLL's or .so's to do the job without needing a separate processes or programs.

    The end result is that Perl can copy or move a file faster than the command line shell (like bash, etc) can do it because there is no bash interpreter! (a separate program that has to get started and there are inefficiencies with that...).

    Your result is not surprising and is expected.

    A simple Perl program can beat the heck out of MS XCOPY.

    Well written Perl runs very quickly.