제4 장 - 알고리즘 과 절차 제어
순환 하 다.
대부분의 프로 그래 밍 언어 에서 코드 실행 시간 은 대부분 순환 에 소모 된다.순환 은 가장 흔히 볼 수 있 는 프로 그래 밍 모델 중 하나 이자 성능 향상 에 관심 을 가 져 야 할 요점 중 하나 이다.
순환 유형
자 바스 크 립 트 에는 네 가지 순환 유형 이 있 습 니 다.
for (var i=0; i < 5; i++) {
// do sth
}
for 순환 은 자 바스 크 립 트 에서 가장 자주 사용 하 는 순환 구조 입 니 다.그것 은 네 부분 으로 구성 되 어 있 습 니 다. 초기 화, 테스트 조건, 후 실행 체, 순환 체 입 니 다.코드 가 for 순환 을 만난 후에 초기 화 코드 를 실행 한 다음 에 테스트 조건 에 들 어 갑 니 다.전 측 조건 이 true 라면 순환 체 를 실행 합 니 다.순환 체 가 실 행 된 후 실행 코드 가 실 행 됩 니 다.
var i = 0;
while(i < 10) {
// do sth
i++;
}
while 순환 은 하나의 전 측 조건 과 하나의 순환 체 로 구성 된다.순환 체 가 운행 하기 전에 먼저 측정 조건 을 계산한다.계산 결과 가 true 이면 순환 체 를 실행 합 니 다.모든 for 순환 은 while 순환 으로 바 꿀 수 있 습 니 다.
var i = 0;
do {
//
} while (i++ < 10)
do - while 순환 에서 순환 체험 은 적어도 한 번 은 실 행 됩 니 다.그리고 재 집행 여 부 는 재 측정 조건 에 의 해 결정 된다.
for (var prop in object) {
// do sth
}
순환 체 가 실 행 될 때마다 prop 변 수 는 object 의 속성 명 으로 할당 되 어 모든 속성 이 다 옮 겨 다 닐 때 까지 되 돌 아 옵 니 다.대상 이 원형 체인 에서 물 려 받 은 속성 을 포함 합 니 다.
순환 성능
상기 네 가지 순환 유형 중에서 for - in 만 순환 이 현저히 느리다.
매번 교체 작업 은 인 스 턴 스 나 원형 속성 을 동시에 검색 하기 때문에 for - in 순환 의 매번 교체 에 더 많은 비용 이 발생 합 니 다.같은 횟수 의 순환 에 비해 for - in 순환 은 최종 적 으로 다른 유형의 속도 의 1 / 7 에 불과 합 니 다.따라서 속성 수량 이 알 수 없 는 대상 을 교체 해 야 한 다 는 것 이 명확 하지 않 으 면 for - in 을 사용 하 는 것 을 피해 야 합 니 다.
만약 순환 유형 이 성능 과 무관 하 다 면 다음 두 가지 에서 출발 하여 최적화 할 수 있다.
순환 의 전체 속 도 를 높이 는 좋 은 방법 은 매번 순환 에 걸 리 는 작업 의 수량 을 제한 하 는 것 이다. 먼저 예시 코드 를 보 자.
//
for (var i=0; i < items.length; i++) {
//
process(items[i])
}
위의 이 예시 에서 매번 순환 을 실행 할 때마다 해 야 할 일 은 다음 과 같다.
//
for (var i=0, len=items.length; i < len; i++) {
process(items[i])
}
위의 최 적 화 를 거 친 후, 배열 의 길이 에 따라 대부분의 브 라 우 저 에서 25% 의 시간 을 절약 할 수 있 으 며, 역순 순환 을 통 해 순환 성능 을 향상 시 킬 수 있다.
//
for (var i=items.length; i--; ) {
process(items[i])
}
위의 예제 에 서 는 역순 순환 을 사용 하고 감법 작업 을 제어 조건 에 넣 었 습 니 다. 현재 모든 제어 조건 은 간단 한 것 과 0 을 비교 할 뿐 입 니 다. 제어 조건 은 두 번 의 비교 (반복 대수 가 총수 보다 적 습 니까? 그것 은 true 입 니까?) 에서 한 번 의 비교 (true 입 니까?) 로 줄 어 들 었 습 니 다.
위의 두 가지 최 적 화 를 거 친 후에 실행 속 도 는 원본 버 전보 다 약 50% - 60% 빨 라 졌 다.
미완이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.