IGListKit/Source
Ryan Nystrom afd2d29eec Add diffing optimization when result is all deletes or inserts
Summary:
In an attempt to best other diffing libraries, I noticed that pure insert/delete diffing results would be almost 5x slower than changes between existing arrays. This is pretty much a benchmarking enhancement, but improves diffing performance by ~5x when the from-array or to-array is empty.

```
// OLD only inserts
avg: 0.007469, min: 0.006998, max: 0.016550, p50: 0.007254, p75: 0.007712, p90: 0.007899, p95: 0.008345, p99: 0.016550
// NEW
avg: 0.001392, min: 0.001256, max: 0.006772, p50: 0.001289, p75: 0.001348, p90: 0.001533, p95: 0.001614, p99: 0.006772
```

```
// OLD only deletes
avg: 0.005821, min: 0.005669, max: 0.006511, p50: 0.005766, p75: 0.005852, p90: 0.006030, p95: 0.006204, p99: 0.006511
// NEW
avg: 0.001184, min: 0.001096, max: 0.001673, p50: 0.001123, p75: 0.001212, p90: 0.001378, p95: 0.001467, p99: 0.001673
```

Note the average time improvements (seconds).

Benchmarking done on a 4s w/ this project:
https://pxl.cl/bLBB

Reviewed By: manicakes

Differential Revision: D6968683

fbshipit-source-id: 0d8e058f0aaa9ce756ca69326527d04504ac6429
2018-02-13 10:13:44 -08:00
..
Common Add diffing optimization when result is all deletes or inserts 2018-02-13 10:13:44 -08:00
Internal Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListAdapter.h Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListAdapter.m Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListAdapterDataSource.h Remove white space 2017-05-27 08:17:59 -07:00
IGListAdapterDelegate.h Remove @param alignment from header docs #trivial 2017-04-18 09:46:18 -07:00
IGListAdapterMoveDelegate.h Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListAdapterUpdateListener.h Generate 3.2 docs 2018-02-06 15:47:20 -08:00
IGListAdapterUpdater.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListAdapterUpdater.m Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListAdapterUpdaterDelegate.h Add collection view as an exception param and capture data source state on crash 2018-01-31 15:16:59 -08:00
IGListBatchContext.h Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListBindable.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListBindingSectionController.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListBindingSectionController.m Dedupe view models in IGListBindingSectionController 2017-09-20 18:04:11 -07:00
IGListBindingSectionControllerDataSource.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListBindingSectionControllerSelectionDelegate.h Generate 3.2 docs 2018-02-06 15:47:20 -08:00
IGListCollectionContext.h Add new iOS 11 api adjustedContentInset support 2017-12-18 08:51:14 -08:00
IGListCollectionView.h Generate 3.2 docs 2018-02-06 15:47:20 -08:00
IGListCollectionView.m created IGListCollectionView 2017-12-15 09:33:39 -08:00
IGListCollectionViewDelegateLayout.h Update .travis.yml and lint.sh, try to fix #1060 and lint errors #trivial 2018-02-02 13:16:46 -08:00
IGListCollectionViewLayout.h expose didModifySection on IGListCollectionViewLayout 2017-12-15 09:33:39 -08:00
IGListCollectionViewLayout.mm Update .travis.yml and lint.sh, try to fix #1060 and lint errors #trivial 2018-02-02 13:16:46 -08:00
IGListDisplayDelegate.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListGenericSectionController.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListGenericSectionController.m Add generic type section controller 2017-04-19 12:45:36 -07:00
IGListKit.h Update .travis.yml and lint.sh, try to fix #1060 and lint errors #trivial 2018-02-02 13:16:46 -08:00
IGListReloadDataUpdater.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListReloadDataUpdater.m Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListScrollDelegate.h Generate 3.2 docs 2018-02-06 15:47:20 -08:00
IGListSectionController.h Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListSectionController.m Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListSingleSectionController.h Generate 3.2 docs 2018-02-06 15:47:20 -08:00
IGListSingleSectionController.m IGListSingleSectionControllerDelegate: add deselect delegate method 2017-12-18 12:45:09 -08:00
IGListStackedSectionController.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListStackedSectionController.m Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListSupplementaryViewSource.h Swift name annotations 2017-05-09 14:31:28 -07:00
IGListTransitionDelegate.h Made IGListTransitionDelegate inherited from NSObject 2018-01-31 11:17:59 -08:00
IGListUpdatingDelegate.h Interactive Reordering 2018-02-12 09:27:08 -08:00
IGListWorkingRangeDelegate.h Swift name annotations 2017-05-09 14:31:28 -07:00
Info.plist Update podspec, project, and examples to 3.2 2018-02-06 15:47:20 -08:00