怎样在看不懂算法代码的情况下,等价的优化算法

你得先看懂数学模型,然后再去看代码。如果懂了模型并了解其中各参数的作用,还是有一定可能看不懂代码,但可以调试出好结果的。因为如果代码是完全按照模型写而并没有trick在里面的话,那么重要的是模型参数,而不是代码的具体实现过程。毕竟很多数学上一行带过的公式,其代码实现会特别的冗长,在只关注结果的前提下,可以不去关注它们是具体怎么实现的。这就相当于软件测试中的黑盒子测试,测试者并不知道软件内部模块结构等,仅通过其提供的参数借口去尽可能的尝试不同组合已发现潜在的bug。而这就要求测试者对该软件的模型有一定了解。一言以蔽之,先看懂数学模型,再去调参数,是个可行的方法。
■网友
先写好单元测试,确保覆盖现有功能。然后profiler查找性能黑洞,有针对性的优化,不做无用功。再针对性优化,每一步都要运行单元测试,过程中顺手重构程序流程,该提取子函数的,该修改变量名的,该添加注释的,该添加辅助函数的等等。如果可以,先设定优化目标,先写好性能测试,修改优化代码,直到满足性能测试后结束。
■网友
没办法
■网友
作为一个Berkeley的学生,表示我们的机器结构61C的第三个project,就是要我们优化一个看不懂算法的。。。嗯,这个project要我们优化一个神经网络识别猫的算法,要把250Cats/s提速到3K+Cats/s,最后我们是这样优化的,把用到的参数都弄出来,为每种特定的函数写一个Specialized Function,然后把循环展开,使用Intel提供的AVX寄存器的功能每次计算4个浮点数(这个可以在https://software.intel.com/sites/landingpage/IntrinsicsGuide/找到),然后使用OpenMP使得程序在线程层面上进行Parallel Computation。当然这是我们的入门课程,不一定能够帮上楼主。
■网友
假如不懂原理的话你能做的事情并不比编译器多多少,至多是参考JIT用profile优化一下数据结构。别的。。。人干不过现代编译器
■网友
自己实现一遍。。


    推荐阅读