用经济的策略去设计

                                                                              用经济的策略去设计

       什么方法是经济的? 就是投入产出比高的方法,就是经济的方法。在设计中,我们会遇到很多问题,

       判断这些问题的解决方法的好坏取决于这些是否经济。

       举一个例子,如果我们要读一个文件,在内存许可的条件下,我们是采用小I/O的方式去读,还是采用大I/O的方式去读,这个问题其实是比较简单,

       很多人,应该采用大I/O的方式去读,因为采用大I/O读可以减少很多次的交互。其实,这就体现一种经济的策略。


       采用经济的方法去设计,就是我们要采用最直接的方法去达成我们的目的。在软件设计领域,我们采用经济的策略去设计,就是要减少对CPU、内存、磁盘I/O的使用。

       我们需要花费比较小的代价,去达成目的。但是CPU、内存、磁盘I/O、线程这些因素是相互制约的,我们必须权衡,根据特定的效用去选择我们的设计。


       其实,在现实中,我们去购买一件物品,我们采用经济的策略去购买,也不单单从价格的角度去考虑,我们根据品牌、质量、效用等多个因素去权衡,从而在一定的价位购买          具有某种品牌、效用、质量的产品。

  

        在我们的软件设计中,我们也从占用一定的CPU利用率、一定的内存、一定的线程、一定磁盘利用率去达到某种性能水平的设计。

        比如,文件系统设计,文件系统在文件顺序大I/O读写的情况,其性能是很高,但是在小I/O的情况下,其性能就会很差,在这种情况下,我们会采用经济的方法去设计,也就是         从某一种性能水平,我们可能会浪费一定的内存去做读、写CACHE,从而进行对写I/O进行聚合,或者对读请求进行预读。如果在CACHE的条件下,还是不能提高性能,我们         有可能采用某一定价位的磁盘,即选择转速相对比较大的磁盘介质,当然转速大,价格也就相对高。

        而这时的设计,摆一个问题:如何采用最经济的方式去实现某一性能水平的文件系统。


       小到代码级别的经济方式:减少内存拷贝,最好考虑是否能够做到零拷贝;减少等待时间,这时要考虑并发、流水线;减少函数调用层次,写圈复杂度低的代码,设计好类              的层次,继承;减少I/O交互数次。

       

       大到设计级别的经济方式:变随机I/O为顺序I/O,变小I/O为大I/O,变同步为异步,变CACHE I/O 为直接I/O。


       采用经济方式去设计,首先要考虑好的你的效用,或者是你的目标,然后从你的众多设计,去掉那些曲折的方式,以最小的代价去达成你的目标,尤其在设计的时候,要考虑          这个步骤是否必须的,是否可以裁掉。

      

        采用经济的观点去设计,在我们设计未知的领域的时候,也许是一种好的方式,就如贪心算法,我们不知道最优算法是什么,但是我们从我们的角度,选择经济的方式。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值