A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cro 初级黑马   /  2012-6-3 23:10  /  1519 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

做移动开发可要讲求效率,移动设备的硬件资源!想到那天用for循环做从1到100的累加实在是不明智之举,这样做的执行效率似乎很低!要酌情考虑运用循环,有时候循环可以降低程序的运行效率。比如从1加到100这题用for循环做很容易做,也很容易理解。但这样循环的累加很浪费时间,尽管这点时间开销不算什么。但程序做大了,点滴的效率提升似乎很必要,特别是在我们的移动开发上。对于这个问题,我们可以运用公式求解,即我们熟知的等差数列公式:sum = n(n + 1) / 2(其中n = 100;) 这样效率或许更高。

大家在写程序时,要时不时考虑一下执行效率,我觉得这个习惯很重要!大家对于这个主题有何高见,不防贴出分享!

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 既然是习惯,那么以后就要分享更多类似的内.

查看全部评分

2 个回复

倒序浏览
说到效率就得和算法联系了;    汗,  这个算法,  是个牛B的东西,我 IQ低了, 不知道说点什么好;
回复 使用道具 举报
我来提一点吧,可能我的理解也不是很透彻,这个是我在疯狂JAVA讲义里看到的
下面有3个程序
程序1:
public class TestScope1
{
        //定义一个成员变量作为循环变量
        static int i;
        public static void main(String[] args)
        {
                for ( i = 0 ; i < 10 ; i++)
                {
                        System.out.println("Hello");
                }
        }
}


程序2:
public class TestScope2
{
        public static void main(String[] args)
        {
                //定义一个方法局部变量作为循环变量
                int i;
                for ( i = 0 ; i < 10 ; i++)
                {
                        System.out.println("Hello");
                }
        }
}

程序3:

public class TestScope3
{
        public static void main(String[] args)
        {
                //定义一个代码块局部变量作为循环变量
                for (int i = 0 ; i < 10 ; i++)
                {
                        System.out.println("Hello");
                }
        }
}


这3个程序,其中程序3的效率最高,程序1的效率最低。
程序3效率高,变量i只是在循环中使用,因此可以作为一个局部变量定义在循环体内作为一个局部变量,循环退出后就通过JAVA中的垃圾回收机制回收。
而程序1的效率最低,因为把变量i定义成静态属性,是一个类属性,在类加载是就存在,直到系统完全销毁该类,生命周期与类相同,对内存来说是一个极大的负担。尤其是该属性的作用只是作用于某个循环,这样做就更不可取。程序简单时感觉不到之间的差距,当在一个非常复杂的程序中时,2者差距会非常大。
程序2是将i定义成类的一个成员变量或者实例属性,在类被实例化时开始存在,他的作用范围进存在与本实例所存在的范围有关。它也有一定的内存消耗,但是比程序1小,比程序3大,介于两者之间。

对于我理解中有什么不对的地方,麻烦大家指正,谢谢~~~{:soso__8961432591078930798_3:}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 挺不错,重在参与...

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马