我们公司有个CS架构的java程序,买过一些客户了;但这个java程序做兼容性很高,几乎包含所有客户的需求,随着需求越来越多,维护上也很不方便,比如不同客户的处理方式不同,就得增加变量来区分控制。这样,可能会造成一定代码冗余。现在,某个客户希望我们优化程序,如果对这个客户去掉冗余代码,以及它不需要的包的话,程序处理速度上会有多大提升空间啊?有没有这样的经验数据呢?java冗余代码操作速度

解决方案 »

  1.   

    把不需要的代码去掉,对性能的提高基本上是可以忽略不计的。而且万一弄的不好还会出问题,毕竟大范围改动这种代码难免不出bug。
    建议还是要从这个客户需要用到的算法、数据库设计等地方进行优化。
      

  2.   

    个人感觉影响程序速度主要是IO操作(例如数据库操作,读取文件),算法(排序之类的),算法好坏影响也不小。本人测试过冒泡排序和希尔排序,3000W纯数字数组,进行排序,希尔排序<10s,但是冒泡10min没跑出来,强行终止掉了。优化:减少文件读写,优化sql语句,优化算法,大数据量考虑分批处理。
      

  3.   

    jar在你的project里,不见得就一定会load,所以,去掉可能没多大意义。
    但是重构成plug-in结构,会不会工作量又太大了?
      

  4.   

    我也觉得你那些多余代码去掉,真心快不了多少。删代码带来的操作还容易引起很多位置BUG,得不偿失。
    还是优化下核心算法比较来的快,也好实施。
      

  5.   

    模块化,利用Builder和Abstract Factory模式,根据配置文件加减不同的功能,或者同一类功能的不同版本,尽量不要在运行的模块里面做很多判断,这样会影响效率,大大降低可读性,也就让代码难以维护了
      

  6.   

    你觉得我一个for循环,没有break的条件,能跑多久我这个依赖少。代码就三行。
      

  7.   

    或者这样说,比如我们现在的程序,本来有个很大的frame,这个frame中有很多线程及对象,但新的需求又建立了一个新的FRAME,要包含老FRAME中的部分线程和对象,但为了兼容处理,方便后期配置,干脆两个都建立,另一个FRAME不显示,但被新的FRAME调用,从效率上来讲,的确是多了个FRAME的建立啊;难道这也不消耗资源吗?
      

  8.   

    其实,这种问题我觉得应该很常见,现在这个项目是个老项目了,卖过很多家。
    之前也没做太多抽象控制,都是客户的需求驱动后,就直接加功能了,久而久之就到了今天的情况。
    你说推倒重来似乎不现实,但优化能达到多少效果也无法预知,真是个棘手的事情啊!
    如果中毒太深,只能砍掉重练了。你们应该分出一两个人,专门做这个项目的重构,其他人继续维护老代码。过得一年半载,就舒坦了。如果总是打补丁,肯定越来越糟事实上,几个if并不会怎么影响代码效率,只是如果你的程序结构不好,会无谓地占用不需要的资源,比如某个功能没有用到,却仍然去初始化了它。占用资源就意味着更多内存,也许会导致更频繁的GC,从而带来效率问题。当务之急是代码重构,越快越好,期间测试必须跟上,这不是一个简单的任务。加油吧,少年!