ListDiff
0.0.1
อัลกอริธึมผลต่าง O(n) แบบน้ำหนักเบาซึ่งอิงตามอัลกอริธึมของ Paul Heckel BiDirectionalCollection ทั่วไป ซึ่งให้การสนับสนุนที่เป็นมิตรต่อ API ที่ใช้ UIKit
คุณสามารถโคลนพื้นที่เก็บข้อมูลนี้และเรียกใช้ ListDiffExample
เพื่อดูภาพเคลื่อนไหวมุมมองคอลเลกชันที่ ListDiff จัดเตรียมไว้
print ( ListDiff . diffing ( oldData : " laksjdzcxlkawiey " , newData : " xclvkbyoieuwyrck " ) )
collectionView . animateItemChanges ( oldData : oldData , newData : newData ) {
dataSource = newData
}
เมื่อเปรียบเทียบกับ CollectionDifference ของ Swift
อัลกอริธึมพื้นฐาน | คำสั่ง | 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
และป้อน URL ที่เก็บด้วย GUI
Repository: https://github.com/zzzzeu/ListDiff
เพิ่มสิ่งต่อไปนี้ในการขึ้นต่อกันของ Package.swift
ของคุณ :
. package ( url : " https://github.com/zzzzeu/ListDiff.git " , from : " 0.0.1 " )