ListDiff
0.0.1
Algoritme perbedaan O(n) yang ringan berdasarkan algoritma Paul Heckel. Itu dibangun di atas BidirectCollection generik, memberikan dukungan ramah untuk API berbasis UIKit.
Anda dapat mengkloning repositori ini dan menjalankan ListDiffExample
untuk melihat animasi tampilan koleksi yang disediakan oleh ListDiff.
print ( ListDiff . diffing ( oldData : " laksjdzcxlkawiey " , newData : " xclvkbyoieuwyrck " ) )
collectionView . animateItemChanges ( oldData : oldData , newData : newData ) {
dataSource = newData
}
Dibandingkan dengan CollectionDifference Swift
Algoritma dasar | Memesan | 500 elemen | 10.000 elemen | |
---|---|---|---|---|
DaftarDiff | Heckel | PADA) | 0.0037s | 0.0736s |
Swift.CollectionDifference | Myers | DI(ND) | 0.0112s | 4.7747s |
Tolok ukurnya bisa dilihat di sini.
$ 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
Pilih menu Xcode File > Swift Packages > Add Package Dependency
dan masukkan URL repositori dengan GUI.
Repository: https://github.com/zzzzeu/ListDiff
Tambahkan yang berikut ini ke dependensi Package.swift
Anda :
. package ( url : " https://github.com/zzzzeu/ListDiff.git " , from : " 0.0.1 " )