2012-01-23 24 views
10

He siguiente código que muestra una imagen con letras,¿Cómo puedo aumentar el rendimiento del siguiente código?

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

¿Cómo puedo hacer mi código de un peso tan ligero que funciona muy bien. Buen rendimiento, declaración adecuada de variables, bucles, uso de recolección de basura, etc.

Respuesta

1

Eche un vistazo a this question and all its answers que hablan mucho sobre la optimización del rendimiento en android.

+0

¿No crees que esta respuesta debería ser como un comentario en lugar de una respuesta? –

2

Depende demasiado de su aplicación específica para dar una respuesta general. Pero Google ha escrito a performance guide con consejos específicos de Android. Sugeriría leer eso.

Por supuesto, no va mucho en consejos generales de rendimiento, pero espero que ya los conozca. De lo contrario, debería intentar encontrar algunos recursos sobre el ajuste general del rendimiento de los programas y consejos de rendimiento específicos de Java, aunque no todos estos últimos serán aplicables para Android.

Si bien muchos de esos consejos mejoran (muy ligeramente) el rendimiento, puede que no siempre sean las mejores decisiones desde el punto de vista del diseño de software (por ejemplo, mantenimiento y portabilidad). Además, muchos de ellos son simplemente "trucos" que pueden ser automatizados por un compilador y, por lo tanto, probablemente se incorporarán en una versión posterior del JIT. Puede que ya estén en 4.0 ya que la guía fue escrita para 2.3.

5

Usted no es el único que piensa para obtener el rendimiento que necesita para declarar variables correctamente, optimizar los bucles, etc.

Pero si sólo se sienta y hace eso, se termina la fijación de las cosas que no están rotas .

La clave para la optimización del rendimiento es la siguiente: primero averigüe qué necesita ser reparado.

Eso es lo que se supone que los perfiladores lo ayudarán a hacer. Personalmente, uso random pausing, y también lo hacen muchas personas. Aquí hay un corto PDF slide show sobre eso.

El trato es que, a menos que su código sea realmente simple (en cuyo caso podría no tener mucho espacio para la aceleración), probablemente tiene varias cosas que puede arreglar para acelerarlo. Supongamos que hay tres:

  • A, responsables del 40% del tiempo total
  • B, responsable del 20% del tiempo total
  • C, responsable del 10% del tiempo total

Bien, entonces primero encuentras A, y lo arreglas. ¿Cuánta aceleración obtienes? (1/(1-.4)) = 1.67 o 67%. No está mal.

Pero si nos fijamos de nuevo en los porcentajes, ahora:

  • B se lleva el 33% (ya que toma tanto tiempo como antes, pero el total ya no se está hinchado por A)
  • C toma 17%

Por lo tanto, deberían ser más fáciles de encontrar, ya que toman porcentajes más grandes. Ya entendió la idea.

Si arreglas todos ellos de ellos, ¿cuánto tiempo tardas? 1/(1 - .7)) = 3.33 = 233%.

Si hubiera más, como D y E, que podría haber, podría ir aún más lejos.

Pero si echa de menos cualquiera de ellos, ¿qué tan rápido se pone? Ese artículo se convierte en su limitador de velocidad. Así que continúa hasta que no puedas encontrar nada más.

¡Acéptalo y diviértete!

Cuestiones relacionadas