首页
社区
课程
招聘
[求助]工作中遇到的一个追求速度的算法,国外有人控制在30秒内,我却要6分钟.
发表于: 2011-10-12 18:57 36307

[求助]工作中遇到的一个追求速度的算法,国外有人控制在30秒内,我却要6分钟.

2011-10-12 18:57
36307
收藏
免费 0
支持
分享
最新回复 (85)
雪    币: 527
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
猜测楼主将上面的代码封成了一个函数,然后循环调用之,求证实,还有就是楼主能确定是查找费的时间多吗?还是其他操作浪费了时间,求解释
2011-10-14 17:10
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
没有封装啊。。。。我的思路是这样的,但我的程序还有一些其它处理,实际操作是不是这样子我的就不敢保证了。。我写出来的代码老是和我想的代码不一样的
2011-10-14 17:15
0
雪    币: 527
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
s牛是哪位大牛啊,我最喜欢钻研算法了,希望得到指点 周末一定要写代码测试
2011-10-14 17:22
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
万人敬仰的S大真相:sessiondiy
给一篇贴子的链接 : http://bbs.pediy.com/showthread.php?t=130066&highlight=%E7%94%B2%E5%A3%B3

兄弟要是在S大那取到真经了记得随便翻两页给大伙看看呀,追求S大的人不记其数
2011-10-14 17:45
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
这个我确实不会
2011-10-15 02:00
0
雪    币: 188
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
31
我理解有误, 我以为黑盒中的数据是你自己的, 外面的人想知道某个位置上是什么
而你想快速告诉他正确的结果
2011-10-15 15:53
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
都是牛人,。学习了。感谢分享!
2011-10-16 08:31
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
33
平常牛皮吹大了...我根本不懂数学 (有帖子可证明)
算法请找 ccfer
我对他的敬仰有如黄河泛滥一发不可收拾

最近事情多, 但还是都会上来花几分钟挑标题看帖
幸好有看到这帖刚好做个解释
我懂的东西很少, 跟前辈比,实在是gg比鸡腿, 断层啊~

平常大家都爱玩笑玩玩, 夸大点讲话了.
2011-10-16 10:18
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
34
ccfer也是偶滴神啊!
2011-10-16 12:00
0
雪    币: 527
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
瞻仰一下大牛
2011-10-16 18:09
0
雪    币: 527
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
抱歉,周末没能写代码,哥们来天津看我了,我陪他了,没时间上网,今天在网吧通宵,希望可以有机会写代码测试,抱歉
2011-10-16 23:34
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qmi
37
这里的确可以学多很多知识 高手很多哦
2011-10-18 19:20
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
38
其实这里有个精度要求的问题. 如果你要求是100%准确的读出所有数字, 那么二分法就需要细分到1才行, 如果有允许误差(比如说是N, N=1是100%精确), 那么可以以16*N为step依次取值, 如果取到的值发生改变, 则在这个step内使用4次二分法即可估算到大概的位置, 这个位置误差不超过N.
如果二分法发生的概率很低的话, 可以适当提高step的位数, 对应每次二分法的次数, 即16*N->4次, 32*N->5次, 依此类推.
2011-10-18 21:14
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
想不到观音菩萨、如来佛主、玉皇大帝、蒙娜丽莎、达芬奇、耶稣、斯瓦辛格、张学友、刘德华。。。。真帮我把S大给请过来了。。愚民这些天却没有集中精力观察看雪,直接导致没有在第一时间来迎接S大,有我罪,我悔过。。



听闻大牛此句,我等忍不住汗颜,甚至伸手去摸。。。。。发现何止断层啊,,惭愧惭愧。。。。。

此问题依旧还是愚民的6分钟方案。。
2011-10-22 00:49
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
天易兄在我心目中与ccfer并列神位。
2011-10-22 00:52
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
兄弟抬举了。。。其实这东西我也一直在捉摸,只是前几天太忙,一直没定下心来整。。。多交流。
2011-10-22 00:54
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
精度控制很奇怪,,,如果能在N个数之内发现数值变了,必须找到N=1时的分界点。
也就是说,只要发现了分界的地方,就要精确定位到分界点,除非忽略掉了1和3之间的100个2.。
2011-10-22 00:58
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
我提个小建议,先把大数据分块,块内用二分法查找,然后用多线程,一个线程处理一个数据块。我想这样会快一点吧
2011-10-22 11:12
0
雪    币: 1581
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
在内存中复制1.2G的数据30s应该够了吧?不要在前台操作就行了
2011-10-25 11:54
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
这个挺像压缩软件的算法的,不知道说的对不对,建议楼主去看看lwz之类的算法
2011-10-27 16:15
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
如果没有规律可循的话,我觉得这个靠硬件优化比较靠谱,比如多线程,多磁盘阵列,固态硬盘,提高数据的访问性能。就如同38楼说的那样靠猜边界不能保证数据的正确性。
2011-10-27 16:22
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
47
这个其实很简单 这个跟做内存搜索一样
把黑盒全部映射到自己的内存
然后多线程分块搜索。。比如1.5G的黑盒 分成100个线程  一个线程只需要遍历15M的数据 可以在30秒内搞定。
2011-10-31 18:42
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
48
呵呵, 楼上几位和我刚开始一样, 都没看清楼主的意思.
数据不是在某个硬盘或文件中的, 而是在一个硬件(狗?)里的, 调用读操作非常耗时, 所以楼主希望能尽量少的调用它, 这个是基本要求, 凡是"把所有数据都读出来"的想法都可以抛弃了.
2011-10-31 20:39
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
这个也一直需要。楼主找到答案我也就可以学习了 呵呵
2011-11-1 13:20
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
楼主能否把问题讲得再清楚一些,比如使用环境,入口出口,技术限制等,信息再多一些吧
2011-11-1 13:29
0
游客
登录 | 注册 方可回帖
返回
//