2012-01-23 22 views
10

Ho seguente codice che visualizza un'immagine con le lettere,Come posso aumentare le prestazioni del seguente codice?

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();} 
    } 
} 

Come posso fare il mio codice di un peso tale luce che funziona molto bene. Un buon rendimento delle prestazioni, una corretta dichiarazione della variabile, dei loop, l'uso di Garbage Collection ecc.?

risposta

1

Dai uno sguardo allo this question and all its answers che parla molto dell'ottimizzazione delle prestazioni su Android.

+0

Non pensi che questa risposta dovrebbe essere un commento invece di una risposta? –

2

Dipende troppo dall'app specifica per dare una risposta generale. Ma Google ha scritto a performance guide con suggerimenti specifici per Android. Suggerirei di leggerlo.

Ovviamente non ci sono molti suggerimenti generali sulle prestazioni, ma mi aspetto che tu sappia già quelli. Altrimenti, dovresti provare a trovare alcune risorse sulla sintonizzazione generale delle prestazioni di programmi e suggerimenti sulle prestazioni specifici per Java, anche se non tutti questi ultimi saranno applicabili per Android.

Non è che mentre molti di questi suggerimenti (un po ') migliorano le prestazioni, potrebbero non essere sempre le migliori decisioni da un punto di vista del Software Design (ad esempio, manutenibilità e portabilità). Inoltre molti di loro sono semplicemente "trucchi" che possono essere automatizzati da un compilatore e che quindi saranno probabilmente incorporati in una versione successiva del JIT. Potrebbero anche essere già in 4.0 da quando la guida è stata scritta per 2.3.

5

Non sei il solo a pensare di ottenere le prestazioni necessarie per dichiarare le variabili correttamente, ottimizzare i cicli, ecc

Ma se basta sedersi e fai così, si finisce per fissare le cose che non sono rotti .

La chiave per l'ottimizzazione delle prestazioni è questa: prima trovare ciò che deve essere risolto.

Questo è ciò che i profiler dovrebbero aiutarvi a fare. Personalmente, io uso random pausing, e così faccio un sacco di gente. Ecco un breve PDF slide show su questo.

L'accordo è, a meno che il tuo codice sia veramente semplice (nel qual caso potrebbe non avere molto spazio per l'accelerazione), probabilmente ha più cose che puoi aggiustare per accelerarlo. Supponiamo che ci sono tre:

  • A, responsabile del 40% del tempo totale
  • B, responsabile del 20% del tempo totale
  • C, responsabile per il 10% del tempo totale

OK, quindi prima trovi A e lo aggiusti. Quanta velocità ottieni? (1/(1-.4)) = 1,67 o 67%. Non male.

Ma se si guarda di nuovo alle percentuali, ora:

  • B prende il 33% (perché ci vuole più tempo di prima, ma il totale non viene più gonfio da A)
  • C prende il 17%

Quindi dovrebbero essere più facili da trovare, poiché assumono percentuali più grandi. Hai l'idea.

Se si corregge di tutti gli di essi, quanto aumenta la velocità? 1/(1 - .7)) = 3,33 = 233%.

Se ce ne fossero di più, come D ed E, cosa che potrebbe benissimo essere, si potrebbe andare ancora oltre.

Ma se si perde uno di essi , quanto si ottiene? Quell'oggetto diventa il limitatore di velocità. Quindi continua finché non trovi più nulla.

Vai ad esso e divertiti!

Problemi correlati