在本次項目中有比較多的直接調指令的地方,是以就在想用system函數還是popen函數,哪個效率更高呢。在網上找了找,看見說什麼的都有,而且感覺他們的測試方法也有點不太贊同,是以就自己寫了個測試代碼,看看到底哪個效率更高點。
關于system函數和popen函數的基本知識在這就不再提了,隻發表一下自己的測試方法和測試結果:
平台:Ubuntu release 7.04
Linux 核心:2.6.20
CPU:雙核 i3
GCC:4.1.2
代碼:
int main(int argc, char *argv[])
{
FILE *fp=NULL;
int i = 0;
clock_t start = 0, end = 0;
double t = 0.00;
start = clock();
for(i=0; i<10000; i++)
{
system("ls -l > /dev/null");
//fp=popen("ls -l > /dev/null","r");
//pclose(fp);
}
end = clock();
t = (double)(end - start) / CLOCKS_PER_SEC;
printf("%f seconds is used\n", t);
return 0;
}
測試結果:
循環1000次:
system:
0.040000 seconds is used
popen:
0.040000 seconds is used
循環10000次:
system:
0.340000 seconds is used
popen:
0.460000 seconds is used
結論:system的效率更高
注:可能測試方法不太正确,請指出;有不同意見者請提出。歡迎讨論!