为什么C++中的sort比C中的qsort慢非常非常多啊该怎么处理
为什么C++中的sort比C中的qsort慢非常非常多啊?
对比了std::sort和qsort,发现速度差异相当大,至少100倍,请大家帮我分析一下原因吧,非常感谢!!
char **text;
text = new char *[1000000];
/* text赋值部分省略 */
/* 用C中的qsort,大概10s左右就可以完成 */
int comp(char **p, char **q)
{ return strcmp(*p, *q); }
qsort(text, 1000000, sizeof(char *), comp);
/* 用C++中的std::sort,花了十分钟了还没有结果 */
bool cmp(const char *p, const char *q)
{ return strcmp(p, q) < 0 ? true : false; }
std::sort(text, text + 1000000, cmp);
------解决方案--------------------
也可能是和strcmp的实现有关系。
建议自己写一个strcmp,然后做测试,这样问题就局限在 qsort / std::sort 上了.
------解决方案--------------------
你可以用stable_sort再试试。
对比了std::sort和qsort,发现速度差异相当大,至少100倍,请大家帮我分析一下原因吧,非常感谢!!
char **text;
text = new char *[1000000];
/* text赋值部分省略 */
/* 用C中的qsort,大概10s左右就可以完成 */
int comp(char **p, char **q)
{ return strcmp(*p, *q); }
qsort(text, 1000000, sizeof(char *), comp);
/* 用C++中的std::sort,花了十分钟了还没有结果 */
bool cmp(const char *p, const char *q)
{ return strcmp(p, q) < 0 ? true : false; }
std::sort(text, text + 1000000, cmp);
------解决方案--------------------
也可能是和strcmp的实现有关系。
建议自己写一个strcmp,然后做测试,这样问题就局限在 qsort / std::sort 上了.
------解决方案--------------------
你可以用stable_sort再试试。