编译执行下面的代码,并测试以下时间(测试所用文件大小1.9M):
time :::0.48user 9.50system 0:10.50elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k
再看下面的代码:
TIME::0.00user 0.04system 0:00.04elapsed 86%CPU (0avgtext+0avgdata 0maxresident)k
复制时间相差那么大的原因,表面上看是将每次复制的字节数扩大了1024倍,但深层次的原因是减少了频繁的
系统调用,在用户程序中使用系统调用是相当浪费系统资源的
主要原因是:在用户空间中执行用户函数,要使用系统调用的话要切换到用户空间,然后切换回来
这样来来回回相当的浪费时间。观察上面两个程序执行的结果,主要的时间都浪费在系统调用上了
在用户空间执行程序的时间是相当小的。