Comments (4)
@shuoli84 If the diffing does not take that long (from the reference point of a user, approx. less than 500ms), you can perform the diffing on the background thread. Anything larger, DifferenceKit or any other diffing approach might not help you. Back to calling performBatchUpdates
!
Also, if you don't want all the dataset in memory, again DifferenceKit might not be what you're looking for. Diffing requires that all the elements be compared and then a determination is reached on the outcome of the differences. Unless you have someway of performing comparisons (==
) without hitting anything that is not in memory, you might be fine. The same goes for Hashes. If you are hitting the storage device or the network to fetch and compare the results, it'll be too slow to be of any advantage.
from differencekit.
@Sameesunkaria Thanks for the reply. I'm thinking of a solution kinda like:
- Section info can be maintained in db, and small enough to load into memory.
- Each section has a version to indicate whether modified.
- When data changed, changeset can be computed from section info stored in db, and when load each item, a db lookup or just read cache.
from differencekit.
@shuoli84 That should work. The comparisons can be made on the version number/identifier. And for the difference identifier, a primary key can also be stored in the section info.
Just to be clear, if the number of entries are too large, the diffing may still take enough time that it can cause a stutter if being computed on the main thread.
from differencekit.
@shuoli84
Did you solve the problem?
Feel free to reopen this issue, if you didn't solved.
from differencekit.
Related Issues (20)
- CollectionDifference API implementation HOT 1
- Compute changeset in the background
- To do the insert and delete operations at once
- Delete .swift-version
- Crash when I reload collectionView HOT 1
- Help needed with crash - NSInternalInconsistencyException HOT 1
- Buggy default reload method HOT 1
- How can I reload a table that is behind on the navigation stack? HOT 1
- UICollectionView reload animation
- Duplicate items with some edge cases in AppKitExtension HOT 13
- Why DifferenceKit is so much faster than Apple's Foundation diffing? HOT 2
- Animation option for row reloading is not a valid option in AppKitExtension
- Does it work seamlessly when using an UICollectionView with SwiftUI cells? HOT 2
- tvOS UICollectionView.reload crash
- The algorithm cannot get the best diff results? HOT 1
- `Differentiable` requres `Equatable` AND `Hashable`, but docs say otherwise
- Using only the diffing algorithm
- Invalid batch updates detected
- How to apply ChageSet to an array?
- Use UITableView reconfigureRows and UICollectionView reconfigureItems for ChangeSet.elementUpdated
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from differencekit.