登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

算法真的很重要!  

2007-05-10 22:23:18|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    毕业设计的事情一直使我有点为难,并不是我不会做,也不是我不想做或者没有时间做。关键这是一个生物计算的相关问题,计算量的巨大绝对超出想象。
    去年过年前,也就是考研结束后的那段时间,我做出了算法的模型,比材料上给的要优化一些,但我是花了大量的空间来换时间的。对所给的标准计算材料所需的缓冲空间是800M+(若不采用任何优化,空间要求达180G+),很显然需要在磁盘开辟缓冲区。当问题规模加大时,程序伸手要更多的空间,我可怜巴巴的E盘可怜巴巴的只有9G空间,不得不采用GZip压缩算法存贮这些中间计算数据。想着驴一样的IO速度,还不如我扔掉缓存重新计算呢。这个结果一直不是我想要的,为此也让我发愁了很多日子。
    前两天,在想我当时的算法设计动机无非就是想减少材料所给算法的重复计算问题,为了实现中间计算结果的重用,我在程序中把这些中间结果存贮,这样下次计算时快速调出避免重复计算。但同时我忽略了生物计算量之大,庞大的数据量拥塞了我的内存和磁盘,那个什么GZip也帮不了什么忙。
    郁闷中,得想想新的主意。突然的灵感,算法有了很大的改观。15s的程序飞速发展到了2s。后来借助微软提供的代码性能分析器和运行性能分析器,对损伤性能的细节和核心函数进行了优化,目前算法对于标准给定材料的运行时间为0.45s+。
    算法的优化绝对比代码优化更重要。正确的优化方法应该是先从算法上着手;达到某种极限后考虑代码优化,也可以采用汇编,平台相关汇编等;如不能满足要求,那可能您需要更强劲的机器了。

  评论这张
 
阅读(1006)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018