Recently I converted a python
program to C
. The python
program will run for about 1
hour to finish the task:
$ /usr/bin/time -v taskset -c 35 python_program ....
......
User time (seconds): 3553.48
System time (seconds): 97.70
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:00:51
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 12048772
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 11434463
Voluntary context switches: 58873
Involuntary context switches: 21529
Swaps: 0
File system inputs: 1918744
File system outputs: 4704
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
while the C
program only needs about 5
minutes:
$ /usr/bin/time -v taskset -c 35 c_program ....
......
User time (seconds): 282.45
System time (seconds): 8.66
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 4:51.17
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 16430216
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 3962437
Voluntary context switches: 14
Involuntary context switches: 388
Swaps: 0
File system inputs: 1918744
File system outputs: 4960
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
From the /usr/bin/time
‘s output, we can see python
program uses less memory than C
program, but suffers more “page faults” and “context switches”.