ListDiff
0.0.1
خوارزمية فرق O(n) خفيفة الوزن تعتمد على خوارزمية Paul Heckel. إنه يعتمد على مجموعة BidirectionalCollection العامة، ويوفر دعمًا ودودًا لواجهة برمجة التطبيقات المستندة إلى UIKit.
يمكنك استنساخ هذا المستودع وتشغيل ListDiffExample
لرؤية الرسوم المتحركة لعرض المجموعة التي يوفرها ListDiff.
print ( ListDiff . diffing ( oldData : " laksjdzcxlkawiey " , newData : " xclvkbyoieuwyrck " ) )
collectionView . animateItemChanges ( oldData : oldData , newData : newData ) {
dataSource = newData
}
مقارنة بـ CollectionDifference في Swift
الخوارزمية الأساسية | طلب | 500 عنصر | 10000 عنصر | |
---|---|---|---|---|
ListDiff | هيكل | على) | 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
حدد File > Swift Packages > Add Package Dependency
وأدخل عنوان URL للمستودع باستخدام واجهة المستخدم الرسومية.
Repository: https://github.com/zzzzeu/ListDiff
أضف ما يلي إلى تبعيات Package.swift
الخاص بك:
. package ( url : " https://github.com/zzzzeu/ListDiff.git " , from : " 0.0.1 " )