최근에 AngularJS 앱을 개발하면서 시계와 관련된 성능 문제가 발생 했으므로 양방향 데이터 바인딩을 사용하여 더티 검사 알고리즘의 시간 복잡도가 더 무엇인지 궁금합니다. 그것의 외모에서, 모든 이벤트가 끝나면 digurn cycle이 있습니다. inturn은 watch cycle을 호출하므로, 이것은 O (n^2)이어야합니다 ... 이것이 맞습니까?AngularJS의 더티 검사 알고리즘의 시간 복잡도는 얼마나됩니까?
1
A
답변
1
더러운 검사는 $diggest
주기에서 발생하므로 $diggest
주기의 복잡성을 조사해야합니다.
주기는 모델의 변경 사항이 완료되었음을 보장하는 단계입니다 ( ). 그러면 업데이트 된 변경 내용으로보기가 렌더링 될 수 있습니다. 이를 수행하기 위해 각도는 각 반복이 $scope
의 $watcher
함수뿐만 아니라 뷰의 모든 템플릿 표현식 을 평가하는 루프를 시작합니다. 현재 반복에서 결과가 이전 반복과 동일하면 이면 각도가 루프를 종료합니다. 그렇지 않으면 다시 시도합니다. 10 번 시도한 후에도 문제가 해결되지 않으면 Angular는 을 종료하고 오류 : "Infite $diggest Loop Error" (infdig
)을 종료합니다.
따라서 더티 검사의 복잡성은 $watcher
과보기의 표현 (예 : $filter
)에있는 기능의 복잡성을 저해 할 것입니다.
그래서 혼자 $diggest
주기는 n
가 $watcher
s와 반복 할 필요가 템플릿 표현식 오 숫자가 O(n)
의 복잡성을 가지고있다. 하지만 그런 기능의 복잡성을 고려해야합니다. 또한 $diggest
주기는 항상 모든 기능을 최소한 두 번 방문하므로 (변경 사항이 안정화되었는지 확인하기 위해)보다 정확하게하려면 O(n*2)
이상의 복잡성이 있다고 말할 수 있습니다. O(n*10)
의 최대 복잡성이지만 2는 최대 값이 10 인 상수 값이기 때문에 복잡도는 여전히 O(n)
으로 간주되어야합니다.
관련 문제
- 1. 이 함수의 시간 복잡도는 얼마나됩니까?
- 2. 이 알고리즘의 복잡도는 무엇입니까
- 3. 전체 알고리즘의 시간 복잡도는 얼마입니까?
- 4. 이 알고리즘의 시간 복잡도는 얼마입니까?
- 5. Hill Climbing Algorithm의 시간 복잡도는 얼마나됩니까?
- 6. 이 재귀 알고리즘의 시간 복잡도는 어떻게 계산합니까?
- 7. 이 알고리즘의 시간 복잡도는 Θ (n)입니까?
- 8. 빠른 정렬의 평균 복잡도는 얼마나됩니까?
- 9. string.GetHashCode의 시간 복잡도는 얼마입니까?
- 10. SQLite에서 INSERT, UPDATE 및 SELECT의 시간 복잡도는 얼마나됩니까?
- 11. 두 개의 중첩 된 for 루프의 시간 복잡도는 얼마나됩니까?
- 12. 데이터 저장소 복사본을 새 인스턴스에 할당하는 시간 복잡도는 얼마나됩니까?
- 13. 구조체 및 텍스트 파일 배열의 복잡도는 얼마나됩니까?
- 14. 시간 복잡도는
- 15. FP 성장 알고리즘의 시간과 공간의 복잡도는 얼마입니까?
- 16. 이 알고리즘의 실행 시간은 얼마나됩니까?
- 17. 재귀 알고리즘의 시간 복잡도와 공간 복잡도는 무엇입니까? 운영자?
- 18. 다음 코드의 Big O 복잡도는 얼마나됩니까?
- 19. 재귀 알고리즘의 시간 복잡도
- 20. 다음 알고리즘의 시간 복잡도
- 21. zlib의 수축 알고리즘의 시간 복잡도
- 22. 알고리즘 분석, 알고리즘의 시간 복잡도
- 23. 알고리즘의 시간 복잡도
- 24. 간단한 알고리즘의 시간 복잡도
- 25. KMP 알고리즘의 시간 복잡도
- 26. JPA 더티 검사
- 27. JQGrid 더티 검사
- 28. AngularJS 더티 검사 성능
- 29. 루프의 시간 복잡도는 얼마입니까?
- 30. std :: sort() 및 std :: sort_heap()의 메모리 복잡도는 얼마나됩니까?