ListDiff
0.0.1
Paul Heckel의 알고리즘을 기반으로 한 경량 O(n) 차이 알고리즘입니다. 일반 BidirectionCollection을 기반으로 구축되어 UIKit 기반 API에 대한 친숙한 지원을 제공합니다.
이 리포지토리를 복제하고 ListDiffExample
을 실행하여 ListDiff에서 제공하는 컬렉션 보기 애니메이션을 볼 수 있습니다.
print ( ListDiff . diffing ( oldData : " laksjdzcxlkawiey " , newData : " xclvkbyoieuwyrck " ) )
collectionView . animateItemChanges ( oldData : oldData , newData : newData ) {
dataSource = newData
}
Swift의 CollectionDifference와 비교
기본 알고리즘 | 주문하다 | 요소 500개 | 요소 10,000개 | |
---|---|---|---|---|
목록차이 | 헤켈 | 에) | 0.0037s | 0.0736s |
Swift.CollectionDifference | 마이어스 | 오(ND) | 0.0112s | 4.7747s |
벤치마크는 여기서 볼 수 있습니다.
$ swift run -c release ListDiffBenchmark
name time std iterations
----------------------------------------------------------------------------
ListDiff 500 elements 3719045.000 ns ± 11.13 % 377
ListDiff 10,000 elements 73628145.000 ns ± 1.01 % 17
CollectionDifference 500 elements 11225107.000 ns ± 4.66 % 120
CollectionDifference 10,000 elements 4774718233.000 ns ± 0.67 % 2
Xcode 메뉴 File > Swift Packages > Add Package Dependency
선택하고 GUI를 사용하여 저장소 URL을 입력하십시오.
Repository: https://github.com/zzzzeu/ListDiff
Package.swift
의 종속성에 다음을 추가하세요.
. package ( url : " https://github.com/zzzzeu/ListDiff.git " , from : " 0.0.1 " )