Chinaunix

标题: 程序运行缓慢 [打印本页]

作者: asdmonster    时间: 2012-10-11 22:12
标题: 程序运行缓慢
本帖最后由 asdmonster 于 2012-10-11 22:18 编辑

有段程序,大约要运行上万次的样子.
如果这样:
  1. bzero( _global_routeid_no_array, _global_routeid_no_array_size);
  2. bzero( _global_routeid_no_array2, _global_routeid_no_array_size);
复制代码
比较快,可惜这是一个错误的算法
如果是这样
  1. bzero( _global_routeid_no_array, _global_routeid_no_array_size*sizeof(int));
复制代码
算法是对的,可惜比前者慢了1分钟!

sizeof(int) == 4

_global_routeid_no_array_size 好像是两万多一点点地样子.

求指点,这是为什么?

作者: ethantsien    时间: 2012-10-11 22:16
你这数组多大?你这程序算法复杂度是O(N!)吗?
作者: asdmonster    时间: 2012-10-11 22:19
ethantsien 发表于 2012-10-11 22:16
你这数组多大?你这程序算法复杂度是O(N!)吗?


数组大约两万多一点点的样子
作者: ethantsien    时间: 2012-10-11 22:22
2W多一点。。。。

那如果算法复杂度是N平法或者N阶层,

20000的平方根80000的平方或者20000的阶乘根80000的阶乘可不是差一点点的问题啊
作者: asdmonster    时间: 2012-10-11 22:23
ethantsien 发表于 2012-10-11 22:22
2W多一点。。。。

那如果算法复杂度是N平法或者N阶层,


程序就那么一点,就是调用了一下bzero()!没有你想象的那么复杂,不是循环,就两条语句,连续调用了上两万多次.

整个时间是2分钟不到.
作者: ethantsien    时间: 2012-10-11 22:25
asdmonster 发表于 2012-10-11 22:23
程序就那么一点,就是调用了一下bzero()!没有你想象的那么复杂,不是循环,就两条语句,连续调用了上两万多 ...


啊,bzero竟然是个库函数啊,用memset试一下
作者: bruceteen    时间: 2012-10-11 22:55
我觉得,你分析下算法,看看是否需要 bzero
动不动就全盘bzero一般都是瞎搞
作者: linux_c_py_php    时间: 2012-10-12 21:04
也许你多加个变量, 多写个if就不用bzero了.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2