如何提高以下代码的性能?

Luc*_*fer 7 performance android

我有以下代码显示带有字母的图像,

public class MainActivity extends Activity 
{
    private String[] capital_letters,small_letters;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart()
    {
        super.onStart();

        try
        {
            capital_letters = getApplicationContext().getResources().getStringArray( R.array.capital_letters );
            small_letters = getApplicationContext().getResources().getStringArray( R.array.small_letters );

            MyAdapter adapter = new MyAdapter ( MainActivity.this ,capital_letters,small_letters );
            ListView list = ( ListView ) findViewById( R.id.list );
            list.setAdapter( adapter );

            list.setOnItemClickListener( new AdapterView.OnItemClickListener() 
            {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int position,long id ) 
                {
                    Intent intent = new Intent ( MainActivity.this, LetterActivity.class );
                    intent.putExtra( "position", position );
                    intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                    startActivity(intent);
                    overridePendingTransition( 0, 0 );
                }
            });
        }
        catch ( Exception e ){e.printStackTrace();}
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使我的代码重量轻,工作非常顺利.平滑的性能意义,正确的变量声明,循环,垃圾收集使用等?

Mik*_*vey 5

你并不是唯一一个想要获得正确声明变量,优化循环等所需的性能的人.

但如果你只是坐下来这样做,你最终会修复那些没有破坏的东西.

性能调优的关键是:首先找出需要修复的内容.

这就是分析师应该帮助你做的事情.就个人而言,我使用随机暂停,很多人也这样做.这是一个简短的PDF幻灯片.

这笔交易是,除非你的代码非常简单(在这种情况下它可能没有太大的加速空间),它可能有多种你可以修复的东西来加速它.假设有三个:

  • A,占总时间的40%
  • B,负责总时间的20%
  • C,负责总时间的10%

好的,所以首先找到A,然后修复它.你得到多少加速?(1 /(1-.4))= 1.67或67%.还不错.

但如果再看一下百分比,现在:

  • B需要33%(因为它花费的时间和以前一样多,但是总数不再被A膨胀)
  • C占17%

所以它们应该更容易找到,因为它们占据更大的百分比.你明白了.

如果你修复了所有这些,你获得了多少加速?1 /(1 - .7))= 3.33 = 233%.

如果有更多的东西,比如D和E,那么你可以更进一步.

但如果你错过了其中任何一个,你会得到多少加速?该项目成为您的限速器.所以继续前进,直到你找不到更多.

去吧,玩得开心!


Hei*_*upp 1

看看这个问题及其所有答案,其中大量讨论了 Android 上的性能优化。