qsort/sort函数性能测试
1,c++ sort函数,比较函数直接return 0或者1
int cmp(int a, int b) { return 1; } #define p 2 int ns[p]; int main() { clock_t start, stop; start=clock(); sort(ns,ns+p,cmp); stop=clock(); cout<<(double)(stop-start); return 0; }
(1)return 1
哪怕p=2,只有2个数,程序也会直接崩溃,因为这不是严格弱序。
参考
(2)return 0
12345 0 123456 4 1234567 42 12345678 401 123456789 4034
排序10^8个数大概需要4秒
2,c语言qsort函数,比较函数直接return 0或者1
int cmp(const void *a, const void *b) { return 0; } #define p 12345678 int ns[p]; int main() { clock_t start, stop; start=clock(); qsort(ns,p,sizeof(int),cmp); stop=clock(); cout<<(double)(stop-start); return 0; }
(1)return 1
12345 375 123456 37047
(2)return 0
12345 0 123456 1 1234567 24 12345678 240 123456789 2413
可以看出,qsort对于非严格弱序虽然可以完成排序,但是非常慢。
3,c++ sort函数,极端全等数组
int cmp(int a, int b) { return a>b; } #define p 123456 int ns[p]; int main() { for(int i=0;i<p;i++)ns[p]=0; clock_t start, stop; start=clock(); sort(ns,ns+p,cmp); stop=clock(); cout<<(double)(stop-start); return 0; }
12345 0 123456 6 1234567 42 12345678 412 123456789 4112
4,c语言qsort函数,极端全等数组
int cmp(const void *a, const void *b) { return *(int *)a > *(int *)b; } #define p 12345 int ns[p]; int main() { for(int i=0;i<p;i++)ns[p]=0; clock_t start, stop; start=clock(); qsort(ns,p,sizeof(int),cmp); stop=clock(); cout<<(double)(stop-start); return 0; }
12345 0 123456 2 1234567 27 12345678 267 123456789 2697
上一篇:
IDEA上Java项目控制台中文乱码