ListDiff
0.0.1
Ein leichter O(n)-Differenzalgorithmus basierend auf dem Paul-Heckel-Algorithmus. Es baut auf der generischen BidirektionalCollection auf und bietet benutzerfreundliche Unterstützung für die UIKit-basierte API.
Sie können dieses Repository klonen und ListDiffExample
ausführen, um die von ListDiff bereitgestellte Sammlungsansichtsanimation anzuzeigen.
print ( ListDiff . diffing ( oldData : " laksjdzcxlkawiey " , newData : " xclvkbyoieuwyrck " ) )
collectionView . animateItemChanges ( oldData : oldData , newData : newData ) {
dataSource = newData
}
Im Vergleich zu Swifts CollectionDifference
Basisalgorithmus | Befehl | 500 Elemente | 10.000 Elemente | |
---|---|---|---|---|
ListDiff | Heckel | AN) | 0.0037s | 0.0736s |
Swift.CollectionDifference | Myers | O(ND) | 0.0112s | 4.7747s |
Benchmark war hier zu sehen.
$ 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
Wählen Sie im Xcode-Menü File > Swift Packages > Add Package Dependency
und geben Sie die Repository-URL über die GUI ein.
Repository: https://github.com/zzzzeu/ListDiff
Fügen Sie Folgendes zu den Abhängigkeiten Ihres Package.swift
hinzu:
. package ( url : " https://github.com/zzzzeu/ListDiff.git " , from : " 0.0.1 " )