日期:2014-05-17  浏览次数:20842 次

长函数的效率问题
我写了一个长函数,里面除了简单的循环判断外(非多层嵌套循环),只执行过一次数据库查询,因为本意是想用函数带多个参数来提高代码的可重用性,实现本站内的万能调用和显示,所以函数长度现在已经很长了,有500行左右

测试:目前我在自己机器上调用了200次,发现速度并没有多大影响,跟重复200次的单纯的数据库查询(和函数同一条sql语句)速度差不到1秒,50次以内才0.2秒左右

问题:如果一个页面调用这个函数次数比较多的话,对页面执行效率会有多大影响,是否会增加服务器压力?跟直接写页面有多大区别?注:直接写页面就是根据不同要求写简单点的代码(例如上面单纯的查询数据库),不是说把函数中代码拷贝出来直接写到页面

还有,改写成class会不会比长函数执行效率更高些?还有什么好的方法能更好的实现这个吗?请大家帮忙,谢谢

------解决方案--------------------
给出编程语言。

vbscript还是c#?或者j script?

效率是依据语言的。举例, vbscript中对象操作是最耗时的。createobject方法的调用尽量降低到最少。其实对于jscript,c#也一样,通常做法就是调用一次createobject,然后再最短时间内一次性作完所有的事,close,释放资源。

其次,vbscript有一个惊人的“特点”,sub。

和其他语言不一样,vb处理sub的效率实在是非常的低!!!!!

可以尝试,一个页面里使用500个sub(函数),执行20次,相比jscript, c#,同样情况下,vbscript能把你弄死机,其他语言则不会。

所以,大致,长函数效率影响不大,唯一注意的就是object的处理,和“多”函数/“嵌套”函数的问题。
------解决方案--------------------
函数长短不会影响执行效率,但是会影响阅读,维护效率.

相反的,封装在一定程序上提高了维护和开发效率,却降低了执行效率
------解决方案--------------------
效率……最让人头痛的问题了
------解决方案--------------------
尝试取巧的办法。(首页执行30多次,够夸张。)

这样做,把执行30多次的过程合并到一个函数里面去. 就是调用1个函数,函数里循环30多次.

这么做可读性必然差了,不过万不得已,也只能牺牲一下了.

对于循环次数不定的情况,增加一个变量,指定循环次数.
------解决方案--------------------
sub 比起 function 应该要好些吧 , 因为它不需要考虑返回值的问题 。