天天看點

Linux中的system和popen的效率比較

在本次項目中有比較多的直接調指令的地方,是以就在想用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的效率更高

注:可能測試方法不太正确,請指出;有不同意見者請提出。歡迎讨論!

繼續閱讀