ListDiff
0.0.1
Un algorithme léger de différence O(n) basé sur l'algorithme de Paul Heckel. Il s'appuie sur la BidirectionnelleCollection générique et fournit une prise en charge conviviale de l'API basée sur UIKit.
Vous pouvez cloner ce référentiel et exécuter ListDiffExample
pour voir l'animation de vue de collection fournie par ListDiff.
print ( ListDiff . diffing ( oldData : " laksjdzcxlkawiey " , newData : " xclvkbyoieuwyrck " ) )
collectionView . animateItemChanges ( oldData : oldData , newData : newData ) {
dataSource = newData
}
Comparaison avec CollectionDifference de Swift
Algorithme de base | Commande | 500 éléments | 10 000 éléments | |
---|---|---|---|---|
ListeDiff | Heckel | SUR) | 0.0037s | 0.0736s |
Swift.CollectionDifférence | Myers | O(ND) | 0.0112s | 4.7747s |
Le benchmark peut être vu ici.
$ 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
Sélectionnez le menu Xcode File > Swift Packages > Add Package Dependency
et entrez l'URL du référentiel avec l'interface graphique.
Repository: https://github.com/zzzzeu/ListDiff
Ajoutez ce qui suit aux dépendances de votre Package.swift
:
. package ( url : " https://github.com/zzzzeu/ListDiff.git " , from : " 0.0.1 " )