从近日参加的某项赛事以及手头上修改的某个项目中,有了这样一个体会:
“需要在代码中不断重复去做的事情,一开始就给它做好了”
这么做于程序员于计算机都是有很大好处的。
程序员:该处代码可以单独写成一个小模块,以后在工程中直接添加即可,即通过解耦合提高了代码的复用效率,省人力。
计算机:能节省大量宝贵的空间和时间资源。空间资源以硬件FPGA举例,时间资源以软件C程序为例。
空间:当有效数据为12位时,1024长的相关器(reg寄存器)需要占用1024*12=12288bit的LUT资源,
若这些数据最终会被量化为2bit,何不单独写一个量化模块?相关器的有效数据一开始就是2位的,最终占用的LUT资源便节省了2/12=1/6倍。
时间:每当C程序满足某特定条件时便要去做一次同样的遍历查找(数组or链表)操作时,何不一开始就去做查找工作,并标记好其位置(数组下标or指针),此后只要去取这些位置的数值即可,经验证可在时间上取得数量级的提升(且该数组or链表中的数据越稀疏效果越好,即需要循环的次数较原数据的减少越显著)。