안드로이드 최적화 기술 (1) 의 코드 최적화 편

6108 단어 Android
오늘부터 안드로이드 최적화 기술에 대한 정리를 진행하고 서로 다른 시각에서 최적화 기술에 대한 분석과 정리를 진행할 것입니다.이 편은 코드의 시각에서 최적화를 하는 것이다. 이것은 모두 평상시 인코딩에서 정리한 경험이다. 만약에 오류가 있거나 더 좋은 방법이 있다면 여러분의 비판과 증명을 환영합니다.이제 주제로 들어갑시다.
1. 순환의 최적화
1. for 순환의 두 번째 부분에서 함수를 호출하지 마라
개발 과정에서 우리는 자주 for 순환으로 수조 조작을 반복하는데 프로그램에서 우리는 이렇게 쓸 수 있다.
for(int i = 0;i < list.size();i++)
{
    //      
}

이런 쓰기 방법은list를 계속 실행합니다.크기 () 방법을 사용하면 성능이 더 많이 소모되므로 최적 쓰기 방법을 다음과 같이 변경해야 합니다.
for(int i =0,len = list.size();i < len;i++)
{
    //      
}

2, 순환 체내 에서 실례화 변수
실제 개발에서 우리는 Adapter 클래스에 데이터 소스를 제공하는 장면에서 다음과 같은 일련의 객체를 List에 추가하는 경우가 많습니다.
for(int i = 0;i < count;i++)
{
    //    
    MsgBean bean = new MsgBean();
    //  bean list
    list.add(bean);
}

이러한 쓰기 방법은 대량의 변수를 중복 정의하고 메모리 자원을 소모하기 때문에 우리는 순환체 밖에서 인용 변수를 정의해야 한다. 가장 좋은 쓰기 방법은 다음과 같다.
MsgBean bean;
for(int i = 0;i < count;i++)
{
    //    
    bean = new MsgBean();
    //  bean list
    list.add(bean);
}

2. 가능한 한 new 대신 clone () 를 사용하여 대상을 만듭니다
new 키워드를 사용하여 객체를 만들 때 상속 트리의 전체 구조 함수 체인이 자동으로 호출되고 항상 Object 클래스에서 시작해서 현재 클래스까지 실행됩니다. 왜냐하면 자바의 모든 클래스는 Object 클래스에서 상속되기 때문입니다.단, clone () 방법을 사용하여 대상을 실례화하면 구조 함수를 호출하지 않습니다.클래스가 Cloneable 인터페이스를 구현해야 합니다.공장 설계 모드를 사용하는 장면에서는 new 키워드 대신 clone () 방법을 사용해야 한다. 예를 들어:
public static Message getInstance()
{
    return new Message();
}

가장 좋은 쓰기 방법은 다음과 같다.
private static Message msg = new Message();
public static Message getInstance()
{
    return (Message)msg.clone();
}

3. 문자열 결합 조작 최적화
   java에서 문자열과 관련된 클래스는 주로string,StringBuilder,StringBuffer가 있다.이 세 가지 유형의 차이에 대해 앞의 글인 에서 분석한 바와 같이 여기서 더 이상 군말하지 않겠다.정적 문자열 결합의 경우 "+"를 사용합니다. 예를 들면 다음과 같습니다.
String str = "hello" + " world" +  " test";

이러한 형식의 문자열 결합 컴파일러는 최종적으로'helloworldtest'로 최적화되기 때문에 상수지에'helloworldtest'문자열이 있는지 확인하고 있으면 대상을 만들지 않습니다.동적 연결, 즉 연결된 문자열에 변수가 있다면 StringBuilder와 StringBuffer를 사용합니다. 그 중에서 StringBuffer는 라인이 안전하기 때문에 StringBuilder보다 조금 느립니다.예를 들어,
String result = "";
StringBuilder sb = new StringBuilder();
sb.append("hello")
.append("world")
.append("Android");
result = sb.toString();

4. 구성원 방법이 Override가 필요하지 않거나 구성원 변수에 접근할 필요가 없다면 static 방법으로
   멀티태스킹을 실현하려면 자바에서 C++의 허함수표와 같은 표를 유지해야 하기 때문에 Override가 필요하지 않을 때 static으로 수식해야 한다. 예를 들어 우리가 자주 도구류인 Utils의 방법을 사용하면 모두static 방법으로 정의할 수 있다.예를 들어,
public static String getName()
{
    return "hello";
}

5. 데이터 복제는 System을 사용한다.arrayCopy() 방법
개발 과정에서 데이터 복제 기능을 자주 사용하므로 System을 권장합니다.array Copy ()native 메서드입니다.네이티브 방법이기 때문에 일반 방법보다 성능이 훨씬 높다.위에서 언급한 String Builder, String Buffer의 밑바닥에도 System을 사용했다.arrayCopy (), 그리고 ArrayList와 Vector 밑부분에서도 이 native 방법을 사용하여 데이터의 복사 작업을 실현합니다.
public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

매개 변수 설명:src:원수 그룹;srcPos: 복사할 소스 그룹의 시작 위치;dest: 목적 수조;destPos: 의도 배열 배치의 시작 위치;length: 복사의 길이입니다.
마지막으로 일상적인 인코딩에서 자주 사용하는 최적화 기교를 간단하게 열거했을 뿐 전부가 아니다. 그리고 많은 코드 최적화 기교는 더 이상 나열하지 않는다. 예를 들어 I/O 조작, 네트워크 요청 등이다.그러나 어떤 최적화 기교든 변하지 않는 취지가 있다. 바로 시간과 공간을 둘러싼 측면에서 최적화를 하는 것이다. (1) 문장의 집행 조수를 최대한 줄이는 것이다.(2) 변수의 생성 수를 최대한 줄인다.(3) 메모리 유출 방지에 관한 두 가지는 상술한 최적화 방법과 기교에서 모두 구현되었다.다음 Android 최적화 기술에 대한 기사는 다음과 같은 몇 가지 관점에서 분석하고 정리할 것입니다.메모리 관리, 즉 메모리의 분배와 회수2.프로그램 설계, 즉 상용 데이터 구조와 알고리즘, 디자인 모델 3.연산자 사용 팁 4.UI 레이아웃 최적화
문/킨보스(약서 작성자)
텍스트 링크:http://www.jianshu.com/p/83e159cdb32d
저작권은 작가에게 귀속되며, 전재는 작가에게 연락하여 권한을 부여받고'약서작가'라고 표기해 주십시오.

좋은 웹페이지 즐겨찾기