2012-01-23 36 views
10

Tôi đã sau mã mà sẽ hiển thị một hình ảnh với chữ cái,Làm cách nào để tăng hiệu suất của mã sau?

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

Làm thế nào tôi có thể làm cho mã của tôi như một trọng lượng nhẹ mà nó hoạt động rất trơn tru. Ý nghĩa hiệu suất mượt mà, khai báo đúng các biến, vòng lặp, sử dụng Bộ sưu tập rác vv?

Trả lời

1

Hãy xem qua số this question and all its answers nói nhiều về tối ưu hóa hiệu suất trên Android.

+0

Bạn không nghĩ câu trả lời này phải là nhận xét thay vì câu trả lời? –

2

Điều đó phụ thuộc quá nhiều vào ứng dụng cụ thể của bạn để đưa ra câu trả lời chung. Nhưng Google đã viết a performance guide với các mẹo dành riêng cho Android. Tôi muốn đề nghị đọc điều đó.

Tất nhiên, nó không đi sâu vào các mẹo hiệu suất chung, nhưng tôi hy vọng bạn đã biết chúng. Nếu không, bạn nên cố gắng tìm một số tài nguyên về điều chỉnh hiệu suất chung của các chương trình và mẹo hiệu suất cụ thể cho Java, mặc dù không phải tất cả các tài nguyên sau sẽ được áp dụng cho Android.

Không làm điều đó trong khi rất nhiều các mẹo đó làm (rất nhẹ) cải thiện hiệu suất chúng có thể không phải lúc nào cũng là quyết định tốt nhất từ ​​quan điểm thiết kế phần mềm (ví dụ: bảo trì và tính di động). Ngoài ra rất nhiều trong số họ chỉ đơn giản là "thủ thuật" có thể được tự động hóa bởi một trình biên dịch và do đó có khả năng sẽ được tích hợp vào một phiên bản sau của JIT. Họ thậm chí có thể đã ở 4.0 kể từ khi hướng dẫn được viết cho 2.3.

5

Bạn không đơn độc trong suy nghĩ để có được hiệu suất mà bạn cần phải khai báo các biến đúng cách, tối ưu hóa vòng vv

Nhưng nếu bạn chỉ cần ngồi xuống và làm điều đó, bạn kết thúc sửa chữa những điều mà không bị hỏng .

Phím điều chỉnh hiệu suất là: trước tiên tìm hiểu những gì cần được khắc phục.

Đó là những gì profilers được cho là sẽ giúp bạn. Cá nhân, tôi sử dụng random pausing và rất nhiều người. Đây là một số PDF slide show ngắn về điều đó.

Thỏa thuận là, trừ khi mã của bạn thực sự đơn giản (trong trường hợp nó có thể không có nhiều chỗ để tăng tốc), nó có thể có nhiều thứ bạn có thể sửa để tăng tốc. Giả sử có ba:

  • A, đóng góp tới 40% tổng thời gian
  • B, chiếm khoảng 20% ​​tổng thời gian
  • C, chịu trách nhiệm 10% tổng thời gian

OK, vì vậy trước tiên bạn tìm thấy A và bạn sửa nó. Bạn nhận được bao nhiêu tốc độ? (1/(1-.4)) = 1,67 hoặc 67%. Không tệ.

Nhưng nếu bạn nhìn một lần nữa tại tỷ lệ phần trăm, bây giờ:

  • B mất 33% (vì phải mất nhiều thời gian như trước đây, nhưng tổng số không còn được căng phồng lên bởi A)
  • C mất 17%

Vì vậy, chúng sẽ dễ tìm hơn vì chúng chiếm tỷ lệ lớn hơn. Bạn có ý tưởng.

Nếu bạn sửa tất cả trong số đó, bạn nhận được bao nhiêu lần tăng tốc? 1/(1 - .7)) = 3.33 = 233%.

Nếu có nhiều hơn, như D và E, có thể rất tốt, bạn có thể tiến xa hơn nữa.

Nhưng nếu bạn bỏ lỡ bất kỳ một trong số họ, bạn nhận được bao nhiêu lần tăng tốc? Mục đó trở thành giới hạn tốc độ của bạn. Vì vậy, hãy tiếp tục cho đến khi bạn không thể tìm thấy bất kỳ điều gì khác.

Hãy đến đó và vui chơi!

Các vấn đề liên quan