Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Relationship Refactor (part-1) #7491

Merged
merged 1 commit into from
May 1, 2021
Merged

Conversation

runspired
Copy link
Contributor

@runspired runspired commented Apr 29, 2021

The overall direction here is towards the edges not managing their inverses and state.

  • relationship state flags are now in their own object (and thus easier to move out of the edges in the future)
  • kills off the Relationships class (this is a small perf improvement) in favor of dictionaries managed directly by the cache.
  • implicit relationships are now instantiated by the graph (instead of by individual relationships)
  • BelongsTo relationships no longer inherit the Relationship base-class and manage their state without the OrderedSets. This provides most but not all of the perf improvement seen here.
  • the rhs/lhs info cache from the lazy-relationship cache in ember-data 3.4 has been revived with some improvements. This is in part to support polymorphism and in part to support coming perf improvements to the relationship layer that are akin to why we needed these infos for the lazy-relationship cache.
  • the graph now discovers and records polymorphism in a way that should with only a small amount of work allow us to eliminate mixin/inheritance based polymorphism
  • canonical state now asserts for a correct polymorphic setup (we could likely just kill the asserts now though)

@jrjohnson is investigating why this potentially caused an error in ilios/frontend.

The improved assertions for polymorphism caught a test in ember-data-storefront that has an incorrect polymorphism configuration. The fact that a few of our own tests as well as this storefront test could pass in the past is evidence that we could potentially just delete all the assertions at this point.

@runspired runspired marked this pull request as draft April 29, 2021 07:42
@runspired runspired changed the title WIP relationship refactor part-1 Relationship Refactor (part-1) Apr 29, 2021
@runspired runspired marked this pull request as ready for review April 29, 2021 18:46
@runspired runspired force-pushed the runspired/simpler-relationships branch from ac84767 to 52ce23c Compare April 30, 2021 20:28
@github-actions
Copy link

github-actions bot commented Apr 30, 2021

Asset Size Report for 66f5e79

IE11 Builds

🛑 The size of the library EmberData has increased by +2.75 KB (+481.0 B compressed) which exceeds the failure threshold of 75 bytes.

Warnings

⚠️ The uncompressed size of the package @ember-data/record-data has increased by +2.81 KB.

Changeset


EmberData +185.84 KB +2.75 KB (+37.77 KB +481.0 B compressed)
    @ember-data/store +77.97 KB -60.0 B (+15.84 KB -10.25 B compressed)
        @ember-data/store/-private +77.05 KB -60.0 B (+15.66 KB -10.25 B compressed)
    @ember-data/record-data +28.87 KB +2.81 KB (+5.87 KB +491.25 B compressed)
        @ember-data/record-data/-private +28.87 KB +2.81 KB (+5.87 KB +491.25 B compressed)

Full Asset Analysis (IE11)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '185.84 KB' │
│ compressed │ '37.77 KB'  │
│  packages  │      8      │
│  modules   │     44      │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '77.97 KB' │
│  compressed  │ '15.84 KB' │
│ % Of Library │   '42.0'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/store/-private                        | 77.05 KB  | 15.66 KB   | 98.8          | 41.5
	@ember-data/store/index                           | 936.00 B  | 190.21 B   | 1.2           | 0.5

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '28.87 KB' │
│  compressed  │ '5.87 KB'  │
│ % Of Library │   '15.5'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private                  | 28.87 KB  | 5.87 KB    | 100.0         | 15.5

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '20.84 KB' │
│  compressed  │ '4.24 KB'  │
│ % Of Library │   '11.2'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                       | 7.75 KB   | 1.57 KB    | 37.2          | 4.2
	@ember-data/serializer/-private                   | 5.69 KB   | 1.16 KB    | 27.3          | 3.1
	@ember-data/serializer/json-api                   | 3.95 KB   | 821.63 B   | 18.9          | 2.1
	@ember-data/serializer/rest                       | 3.00 KB   | 623.49 B   | 14.4          | 1.6
	@ember-data/serializer/index                      | 258.00 B  | 52.43 B    | 1.2           | 0.1
	@ember-data/serializer/transform                  | 215.00 B  | 43.69 B    | 1.0           | 0.1

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '19.33 KB' │
│  compressed  │ '3.93 KB'  │
│ % Of Library │   '10.4'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/model/-private                        | 18.86 KB  | 3.83 KB    | 97.5          | 10.1
	@ember-data/model/index                           | 486.00 B  | 98.76 B    | 2.5           | 0.3

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '18.47 KB' │
│  compressed  │ '3.75 KB'  │
│ % Of Library │   '9.9'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                          | 9.31 KB   | 1.89 KB    | 50.4          | 5.0
	@ember-data/adapter/-private                      | 3.80 KB   | 791.76 B   | 20.6          | 2.0
	@ember-data/adapter/error                         | 1.95 KB   | 405.22 B   | 10.5          | 1.0
	@ember-data/adapter/index                         | 1.81 KB   | 375.96 B   | 9.8           | 1.0
	@ember-data/adapter/json-api                      | 1.60 KB   | 333.69 B   | 8.7           | 0.9

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '9.24 KB' │
│  compressed  │ '1.88 KB' │
│ % Of Library │   '5.0'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.32 KB   | 483.46 B   | 25.1          | 1.3
	ember-data/-private                               | 1.98 KB   | 412.34 B   | 21.4          | 1.1
	ember-data/adapters/errors                        | 1.19 KB   | 247.32 B   | 12.9          | 0.6
	ember-data/setup-container                        | 503.00 B  | 102.22 B   | 5.3           | 0.3
	ember-data/relationships                          | 318.00 B  | 64.62 B    | 3.4           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 55.68 B    | 2.9           | 0.1
	ember-data/serializers/json-api                   | 251.00 B  | 51.00 B    | 2.7           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 49.78 B    | 2.6           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 49.38 B    | 2.6           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 49.38 B    | 2.6           | 0.1
	ember-data/transform                              | 241.00 B  | 48.97 B    | 2.5           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 48.16 B    | 2.5           | 0.1
	ember-data/serializer                             | 232.00 B  | 47.14 B    | 2.5           | 0.1
	ember-data/adapter                                | 226.00 B  | 45.92 B    | 2.4           | 0.1
	ember-data/model                                  | 222.00 B  | 45.11 B    | 2.3           | 0.1
	ember-data/store                                  | 222.00 B  | 45.11 B    | 2.3           | 0.1
	ember-data/attr                                   | 218.00 B  | 44.30 B    | 2.3           | 0.1
	ember-data/version                                | 162.00 B  | 32.92 B    | 1.7           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '8.15 KB' │
│  compressed  │ '1.66 KB' │
│ % Of Library │   '4.4'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 3.11 KB   | 647.06 B   | 38.1          | 1.7
	ember-inflector/lib/helpers/pluralize             | 1.62 KB   | 336.94 B   | 19.9          | 0.9
	ember-inflector/lib/system/inflections            | 1.59 KB   | 330.64 B   | 19.5          | 0.9
	ember-inflector/index                             | 473.00 B  | 96.12 B    | 5.7           | 0.2
	ember-inflector/lib/system                        | 471.00 B  | 95.71 B    | 5.6           | 0.2
	ember-inflector/lib/system/string                 | 332.00 B  | 67.47 B    | 4.0           | 0.2
	ember-inflector/lib/utils/make-helper             | 308.00 B  | 62.59 B    | 3.7           | 0.2
	ember-inflector/lib/helpers/singularize           | 296.00 B  | 60.15 B    | 3.5           | 0.2

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.96 KB'  │
│  compressed  │ '615.97 B' │
│ % Of Library │   '1.6'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.47 KB   | 514.35 B   | 83.5          | 1.3
	@ember-data/debug/setup                           | 500.00 B  | 101.61 B   | 16.5          | 0.3

Modern Builds

🛑 The size of the library EmberData has increased by +2.86 KB (+434.0 B compressed) which exceeds the failure threshold of 75 bytes.

Warnings

⚠️ The uncompressed size of the package @ember-data/record-data has increased by +2.92 KB.

Changeset


EmberData +165.7 KB +2.86 KB (+35.57 KB +434.0 B compressed)
    @ember-data/store +68.86 KB -60.0 B (+14.78 KB -8.89 B compressed)
        @ember-data/store/-private +67.94 KB -60.0 B (+14.58 KB -8.89 B compressed)
    @ember-data/record-data +25.85 KB +2.92 KB (+5.55 KB +442.89 B compressed)
        @ember-data/record-data/-private +25.85 KB +2.92 KB (+5.55 KB +442.89 B compressed)

Full Asset Analysis (Modern)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '165.70 KB' │
│ compressed │ '35.57 KB'  │
│  packages  │      8      │
│  modules   │     44      │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '68.86 KB' │
│  compressed  │ '14.78 KB' │
│ % Of Library │   '41.6'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/store/-private                        | 67.94 KB  | 14.58 KB   | 98.7          | 41.0
	@ember-data/store/index                           | 936.00 B  | 200.90 B   | 1.3           | 0.6

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '25.85 KB' │
│  compressed  │ '5.55 KB'  │
│ % Of Library │   '15.6'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private                  | 25.85 KB  | 5.55 KB    | 100.0         | 15.6

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '19.37 KB' │
│  compressed  │ '4.16 KB'  │
│ % Of Library │   '11.7'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                       | 7.12 KB   | 1.53 KB    | 36.8          | 4.3
	@ember-data/serializer/-private                   | 5.37 KB   | 1.15 KB    | 27.7          | 3.2
	@ember-data/serializer/json-api                   | 3.72 KB   | 816.92 B   | 19.2          | 2.2
	@ember-data/serializer/rest                       | 2.71 KB   | 596.27 B   | 14.0          | 1.6
	@ember-data/serializer/index                      | 243.00 B  | 52.15 B    | 1.2           | 0.1
	@ember-data/serializer/transform                  | 215.00 B  | 46.14 B    | 1.1           | 0.1

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '17.01 KB' │
│  compressed  │ '3.65 KB'  │
│ % Of Library │   '10.3'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/model/-private                        | 16.54 KB  | 3.55 KB    | 97.2          | 10.0
	@ember-data/model/index                           | 486.00 B  | 104.31 B   | 2.8           | 0.3

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '16.02 KB' │
│  compressed  │ '3.44 KB'  │
│ % Of Library │   '9.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                          | 8.37 KB   | 1.80 KB    | 52.2          | 5.0
	@ember-data/adapter/-private                      | 3.58 KB   | 787.73 B   | 22.4          | 2.2
	@ember-data/adapter/error                         | 1.91 KB   | 420.48 B   | 11.9          | 1.2
	@ember-data/adapter/index                         | 1.14 KB   | 249.84 B   | 7.1           | 0.7
	@ember-data/adapter/json-api                      | 1.02 KB   | 223.86 B   | 6.4           | 0.6

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '9.24 KB' │
│  compressed  │ '1.98 KB' │
│ % Of Library │   '5.6'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.32 KB   | 510.62 B   | 25.1          | 1.4
	ember-data/-private                               | 1.98 KB   | 435.50 B   | 21.4          | 1.2
	ember-data/adapters/errors                        | 1.19 KB   | 261.21 B   | 12.9          | 0.7
	ember-data/setup-container                        | 503.00 B  | 107.96 B   | 5.3           | 0.3
	ember-data/relationships                          | 318.00 B  | 68.25 B    | 3.4           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 58.81 B    | 2.9           | 0.2
	ember-data/serializers/json-api                   | 251.00 B  | 53.87 B    | 2.7           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 52.58 B    | 2.6           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 52.15 B    | 2.6           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 52.15 B    | 2.6           | 0.1
	ember-data/transform                              | 241.00 B  | 51.72 B    | 2.5           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 50.86 B    | 2.5           | 0.1
	ember-data/serializer                             | 232.00 B  | 49.79 B    | 2.5           | 0.1
	ember-data/adapter                                | 226.00 B  | 48.50 B    | 2.4           | 0.1
	ember-data/model                                  | 222.00 B  | 47.64 B    | 2.3           | 0.1
	ember-data/store                                  | 222.00 B  | 47.64 B    | 2.3           | 0.1
	ember-data/attr                                   | 218.00 B  | 46.79 B    | 2.3           | 0.1
	ember-data/version                                | 162.00 B  | 34.77 B    | 1.7           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '6.66 KB' │
│  compressed  │ '1.43 KB' │
│ % Of Library │   '4.0'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 2.88 KB   | 632.97 B   | 43.3          | 1.7
	ember-inflector/lib/system/inflections            | 1.59 KB   | 349.21 B   | 23.9          | 1.0
	ember-inflector/index                             | 473.00 B  | 101.52 B   | 6.9           | 0.3
	ember-inflector/lib/system                        | 471.00 B  | 101.09 B   | 6.9           | 0.3
	ember-inflector/lib/helpers/pluralize             | 373.00 B  | 80.06 B    | 5.5           | 0.2
	ember-inflector/lib/system/string                 | 318.00 B  | 68.25 B    | 4.7           | 0.2
	ember-inflector/lib/utils/make-helper             | 308.00 B  | 66.10 B    | 4.5           | 0.2
	ember-inflector/lib/helpers/singularize           | 296.00 B  | 63.53 B    | 4.3           | 0.2

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.70 KB'  │
│  compressed  │ '593.48 B' │
│ % Of Library │   '1.6'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.21 KB   | 486.37 B   | 82.0          | 1.3
	@ember-data/debug/setup                           | 499.00 B  | 107.10 B   | 18.0          | 0.3

Modern Builds (No Rollup)

🛑 The size of the library EmberData has increased by +2.87 KB (+575.0 B compressed) which exceeds the failure threshold of 75 bytes.

Warnings

⚠️ The uncompressed size of the package @ember-data/record-data has increased by +2.92 KB.

Changeset


EmberData +209.42 KB +2.87 KB (+40.04 KB +575.0 B compressed)
    @ember-data/store +99.58 KB -52.0 B (+19.04 KB -10.17 B compressed)
        @ember-data/store/-private/system/core-store +17.23 KB -50.0 B (+3.29 KB -9.78 B compressed)
        @ember-data/store/-private/system/model/internal-model +16.43 KB +18.0 B (+3.14 KB +3.52 B compressed)
        @ember-data/store/-private/system/snapshot +3.0 KB -6.0 B (+586.6 B -1.17 B compressed)
        @ember-data/store/-private/system/references/has-many +1.46 KB +4.0 B (+285.07 B +0.78 B compressed)
        @ember-data/store/-private/system/references/belongs-to +1.19 KB -18.0 B (+232.68 B -3.52 B compressed)
    @ember-data/record-data +30.39 KB +2.92 KB (+5.81 KB +585.17 B compressed)
        @ember-data/record-data/-private/record-data +7.75 KB -54.0 B (+1.48 KB -10.56 B compressed)
        @ember-data/record-data/-private/relationships/state/relationship +5.62 KB -2.03 KB (+1.07 KB -406.41 B compressed)
        @ember-data/record-data/-private/relationships/state/belongs-to +5.83 KB +2.91 KB (+1.11 KB +582.63 B compressed)
        @ember-data/record-data/-private/relationships/state/has-many +2.8 KB +125.0 B (+548.55 B +24.45 B compressed)
        @ember-data/record-data/-private/graph/index +2.2 KB +538.0 B (+430.19 B +105.22 B compressed)
        @ember-data/record-data/-private/index +981.0 B -377.0 B (+187.56 B -73.73 B compressed)
        @ember-data/record-data/-private/ordered-set +1.14 KB +12.0 B (+223.7 B +2.35 B compressed)
        @ember-data/record-data/-private/relationships/state/create 0.0 B -971.0 B (0.0 B -189.91 B compressed)
        @ember-data/record-data/-private/accessors 0.0 B -621.0 B (0.0 B -121.45 B compressed)
        @ember-data/record-data/-private/graph/-edge-definition +2.79 KB +2.79 KB (+545.87 B +558.38 B compressed)
        @ember-data/record-data/-private/graph/-state +293.0 B +293.0 B (+56.02 B +57.3 B compressed)
        @ember-data/record-data/-private/graph/-utils +291.0 B +291.0 B (+55.63 B +56.91 B compressed)

Full Asset Analysis (Modern)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '209.42 KB' │
│ compressed │ '40.04 KB'  │
│  packages  │      8      │
│  modules   │     142     │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '99.58 KB' │
│  compressed  │ '19.04 KB' │
│ % Of Library │   '47.6'   │
└──────────────┴────────────┘
	Module                                                                             | Bytes     | Compressed | % of Package  | % Of Library
	--------------------------------------------------------------------------------------------------------------------------------------
	@ember-data/store/-private/system/core-store                                       | 17.23 KB  | 3.29 KB    | 17.3          | 8.2
	@ember-data/store/-private/system/model/internal-model                             | 16.43 KB  | 3.14 KB    | 16.5          | 7.8
	@ember-data/store/-private/system/model/states                                     | 5.47 KB   | 1.05 KB    | 5.5           | 2.6
	@ember-data/store/-private/system/fetch-manager                                    | 4.96 KB   | 971.48 B   | 5.0           | 2.4
	@ember-data/store/-private/system/record-array-manager                             | 4.47 KB   | 874.35 B   | 4.5           | 2.1
	@ember-data/store/-private/system/store/finders                                    | 4.37 KB   | 855.61 B   | 4.4           | 2.1
	@ember-data/store/-private/index                                                   | 4.11 KB   | 804.75 B   | 4.1           | 2.0
	@ember-data/store/-private/identifiers/cache                                       | 3.86 KB   | 756.00 B   | 3.9           | 1.8
	@ember-data/store/-private/system/store/record-data-store-wrapper                  | 3.33 KB   | 652.75 B   | 3.3           | 1.6
	@ember-data/store/-private/system/snapshot                                         | 3.00 KB   | 586.60 B   | 3.0           | 1.4
	@ember-data/store/-private/system/store/internal-model-factory                     | 2.91 KB   | 570.53 B   | 2.9           | 1.4
	@ember-data/store/-private/system/record-arrays/record-array                       | 2.25 KB   | 440.33 B   | 2.3           | 1.1
	@ember-data/store/-private/system/ds-model-store                                   | 1.99 KB   | 389.66 B   | 2.0           | 1.0
	@ember-data/store/-private/system/request-cache                                    | 1.89 KB   | 369.20 B   | 1.9           | 0.9
	@ember-data/store/-private/system/schema-definition-service                        | 1.47 KB   | 288.52 B   | 1.5           | 0.7
	@ember-data/store/-private/system/references/has-many                              | 1.46 KB   | 285.07 B   | 1.5           | 0.7
	@ember-data/store/-private/system/model/shim-model-class                           | 1.27 KB   | 248.55 B   | 1.3           | 0.6
	@ember-data/store/-private/system/references/belongs-to                            | 1.19 KB   | 232.68 B   | 1.2           | 0.6
	@ember-data/store/-private/system/store/serializer-response                        | 1.12 KB   | 220.07 B   | 1.1           | 0.5
	@ember-data/store/-private/identifiers/utils/uuid-v4                               | 1.05 KB   | 206.11 B   | 1.1           | 0.5
	@ember-data/store/-private/system/internal-model-map                               | 983.00 B  | 187.94 B   | 1.0           | 0.5
	@ember-data/store/-private/system/references/record                                | 979.00 B  | 187.18 B   | 1.0           | 0.5
	@ember-data/store/index                                                            | 936.00 B  | 178.96 B   | 0.9           | 0.4
	@ember-data/store/-private/system/references/reference                             | 917.00 B  | 175.33 B   | 0.9           | 0.4
	@ember-data/store/-private/system/record-arrays/adapter-populated-record-array     | 892.00 B  | 170.55 B   | 0.9           | 0.4
	@ember-data/store/-private/system/model/notify-changes                             | 866.00 B  | 165.57 B   | 0.8           | 0.4
	@ember-data/store/-private/system/errors-utils                                     | 764.00 B  | 146.07 B   | 0.7           | 0.4
	@ember-data/store/-private/system/snapshot-record-array                            | 753.00 B  | 143.97 B   | 0.7           | 0.4
	@ember-data/store/-private/system/record-notification-manager                      | 689.00 B  | 131.73 B   | 0.7           | 0.3
	@ember-data/store/-private/system/references                                       | 598.00 B  | 114.33 B   | 0.6           | 0.3
	@ember-data/store/-private/system/promise-proxies                                  | 556.00 B  | 106.30 B   | 0.5           | 0.3
	@ember-data/store/-private/utils/construct-resource                                | 506.00 B  | 96.74 B    | 0.5           | 0.2
	@ember-data/store/-private/system/store/common                                     | 505.00 B  | 96.55 B    | 0.5           | 0.2
	@ember-data/store/-private/system/coerce-id                                        | 496.00 B  | 94.83 B    | 0.5           | 0.2
	@ember-data/store/-private/system/record-arrays                                    | 487.00 B  | 93.11 B    | 0.5           | 0.2
	@ember-data/store/-private/system/identity-map                                     | 450.00 B  | 86.03 B    | 0.4           | 0.2
	@ember-data/store/-private/system/diff-array                                       | 438.00 B  | 83.74 B    | 0.4           | 0.2
	@ember-data/store/-private/ts-interfaces/identifier                                | 400.00 B  | 76.47 B    | 0.4           | 0.2
	@ember-data/store/-private/utils/symbol                                            | 393.00 B  | 75.14 B    | 0.4           | 0.2
	@ember-data/store/-private/system/record-data-for                                  | 373.00 B  | 71.31 B    | 0.4           | 0.2
	@ember-data/store/-private/identifiers/is-stable-identifier                        | 327.00 B  | 62.52 B    | 0.3           | 0.2
	@ember-data/store/-private/ts-interfaces/fetch-manager                             | 316.00 B  | 60.41 B    | 0.3           | 0.1
	@ember-data/store/-private/utils/promise-record                                    | 290.00 B  | 55.44 B    | 0.3           | 0.1
	@ember-data/store/-private/system/backburner                                       | 253.00 B  | 48.37 B    | 0.2           | 0.1
	@ember-data/store/-private/system/normalize-model-name                             | 220.00 B  | 42.06 B    | 0.2           | 0.1
	@ember-data/store/-private/utils/is-non-empty-string                               | 212.00 B  | 40.53 B    | 0.2           | 0.1
	@ember-data/store/-debug/index                                                     | 193.00 B  | 36.90 B    | 0.2           | 0.1
	@ember-data/store/-private/system/deprecated-evented                               | 190.00 B  | 36.32 B    | 0.2           | 0.1
	@ember-data/store/-private/ts-interfaces/minimum-serializer-interface              | 98.00 B   | 18.73 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data-record-wrapper                | 96.00 B   | 18.35 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/minimum-adapter-interface                 | 95.00 B   | 18.16 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data-store-wrapper                 | 95.00 B   | 18.16 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/schema-definition-service                 | 95.00 B   | 18.16 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data-json-api                      | 90.00 B   | 17.20 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/ember-data-json-api                       | 89.00 B   | 17.01 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data-schemas                       | 89.00 B   | 17.01 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/promise-proxies                           | 85.00 B   | 16.25 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-instance                           | 85.00 B   | 16.25 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data                               | 81.00 B   | 15.48 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/ds-model                                  | 78.00 B   | 14.91 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/utils                                     | 75.00 B   | 14.33 B    | 0.1           | 0.0

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '30.39 KB' │
│  compressed  │ '5.81 KB'  │
│ % Of Library │   '14.5'   │
└──────────────┴────────────┘
	Module                                                                      | Bytes     | Compressed | % of Package  | % Of Library
	-------------------------------------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private/record-data                                | 7.75 KB   | 1.48 KB    | 25.5          | 3.7
	@ember-data/record-data/-private/relationships/state/belongs-to             | 5.83 KB   | 1.11 KB    | 19.2          | 2.8
	@ember-data/record-data/-private/relationships/state/relationship           | 5.62 KB   | 1.07 KB    | 18.5          | 2.7
	@ember-data/record-data/-private/relationships/state/has-many               | 2.80 KB   | 548.55 B   | 9.2           | 1.3
	@ember-data/record-data/-private/graph/-edge-definition                     | 2.79 KB   | 545.87 B   | 9.2           | 1.3
	@ember-data/record-data/-private/graph/index                                | 2.20 KB   | 430.19 B   | 7.2           | 1.0
	@ember-data/record-data/-private/ordered-set                                | 1.14 KB   | 223.70 B   | 3.8           | 0.5
	@ember-data/record-data/-private/index                                      | 981.00 B  | 187.56 B   | 3.2           | 0.5
	@ember-data/record-data/-private/coerce-id                                  | 406.00 B  | 77.62 B    | 1.3           | 0.2
	@ember-data/record-data/-private/graph/-state                               | 293.00 B  | 56.02 B    | 0.9           | 0.1
	@ember-data/record-data/-private/graph/-utils                               | 291.00 B  | 55.63 B    | 0.9           | 0.1
	@ember-data/record-data/-private/normalize-link                             | 249.00 B  | 47.60 B    | 0.8           | 0.1
	@ember-data/record-data/-private/ts-interfaces/relationship-record-data     | 100.00 B  | 19.11 B    | 0.3           | 0.0

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '21.76 KB' │
│  compressed  │ '4.16 KB'  │
│ % Of Library │   '10.4'   │
└──────────────┴────────────┘
	Module                                                     | Bytes     | Compressed | % of Package  | % Of Library
	--------------------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                                | 7.12 KB   | 1.36 KB    | 32.7          | 3.4
	@ember-data/serializer/-private/embedded-records-mixin     | 4.30 KB   | 841.65 B   | 19.8          | 2.1
	@ember-data/serializer/json-api                            | 3.72 KB   | 727.70 B   | 17.1          | 1.8
	@ember-data/serializer/rest                                | 2.71 KB   | 531.15 B   | 12.5          | 1.3
	@ember-data/serializer/-private/index                      | 1.18 KB   | 231.35 B   | 5.4           | 0.6
	@ember-data/serializer/-private/transforms/date            | 523.00 B  | 99.99 B    | 2.3           | 0.2
	@ember-data/serializer/-private/transforms/boolean         | 490.00 B  | 93.68 B    | 2.2           | 0.2
	@ember-data/serializer/-private/transforms/number          | 446.00 B  | 85.27 B    | 2.0           | 0.2
	@ember-data/serializer/-private/transforms/string          | 351.00 B  | 67.11 B    | 1.6           | 0.2
	@ember-data/serializer/-private/utils                      | 286.00 B  | 54.68 B    | 1.3           | 0.1
	@ember-data/serializer/index                               | 243.00 B  | 46.46 B    | 1.1           | 0.1
	@ember-data/serializer/-private/transforms/transform       | 242.00 B  | 46.27 B    | 1.1           | 0.1
	@ember-data/serializer/transform                           | 215.00 B  | 41.10 B    | 1.0           | 0.1

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '20.69 KB' │
│  compressed  │ '3.96 KB'  │
│ % Of Library │   '9.9'    │
└──────────────┴────────────┘
	Module                                                                | Bytes     | Compressed | % of Package  | % Of Library
	-------------------------------------------------------------------------------------------------------------------------
	@ember-data/model/-private/model                                      | 9.60 KB   | 1.84 KB    | 46.4          | 4.6
	@ember-data/model/-private/system/many-array                          | 2.41 KB   | 472.07 B   | 11.7          | 1.2
	@ember-data/model/-private/errors                                     | 2.03 KB   | 398.07 B   | 9.8           | 1.0
	@ember-data/model/-private/index                                      | 1.29 KB   | 252.57 B   | 6.2           | 0.6
	@ember-data/model/-private/system/relationships/relationship-meta     | 1.25 KB   | 245.30 B   | 6.1           | 0.6
	@ember-data/model/-private/attr                                       | 673.00 B  | 128.67 B   | 3.2           | 0.3
	@ember-data/model/-private/system/promise-many-array                  | 642.00 B  | 122.74 B   | 3.0           | 0.3
	@ember-data/model/-private/belongs-to                                 | 589.00 B  | 112.61 B   | 2.8           | 0.3
	@ember-data/model/-private/has-many                                   | 550.00 B  | 105.15 B   | 2.6           | 0.3
	@ember-data/model/index                                               | 486.00 B  | 92.92 B    | 2.3           | 0.2
	@ember-data/model/-private/util                                       | 442.00 B  | 84.51 B    | 2.1           | 0.2
	@ember-data/model/-private/system/promise-belongs-to                  | 412.00 B  | 78.77 B    | 1.9           | 0.2
	@ember-data/model/-private/system/model-for-mixin                     | 408.00 B  | 78.00 B    | 1.9           | 0.2

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '18.14 KB' │
│  compressed  │ '3.47 KB'  │
│ % Of Library │   '8.7'    │
└──────────────┴────────────┘
	Module                                                        | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                                      | 8.37 KB   | 1.60 KB    | 46.1          | 4.0
	@ember-data/adapter/error                                     | 1.91 KB   | 374.55 B   | 10.5          | 0.9
	@ember-data/adapter/-private/build-url-mixin                  | 1.82 KB   | 356.96 B   | 10.1          | 0.9
	@ember-data/adapter/index                                     | 1.14 KB   | 222.55 B   | 6.3           | 0.5
	@ember-data/adapter/-private/index                            | 1.03 KB   | 201.90 B   | 5.7           | 0.5
	@ember-data/adapter/json-api                                  | 1.02 KB   | 199.42 B   | 5.6           | 0.5
	@ember-data/adapter/-private/utils/serialize-query-params     | 792.00 B  | 151.43 B   | 4.3           | 0.4
	@ember-data/adapter/-private/utils/determine-body-promise     | 549.00 B  | 104.96 B   | 3.0           | 0.3
	@ember-data/adapter/-private/utils/parse-response-headers     | 480.00 B  | 91.77 B    | 2.6           | 0.2
	@ember-data/adapter/-private/utils/fetch                      | 454.00 B  | 86.80 B    | 2.4           | 0.2
	@ember-data/adapter/-private/utils/serialize-into-hash        | 347.00 B  | 66.34 B    | 1.9           | 0.2
	@ember-data/adapter/-private/utils/continue-on-reject         | 219.00 B  | 41.87 B    | 1.2           | 0.1
	@ember-data/adapter/-private/fastboot-interface               | 76.00 B   | 14.53 B    | 0.4           | 0.0

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '9.50 KB' │
│  compressed  │ '1.82 KB' │
│ % Of Library │   '4.5'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.32 KB   | 454.86 B   | 24.5          | 1.1
	ember-data/-private/index                         | 1.93 KB   | 377.42 B   | 20.3          | 0.9
	ember-data/adapters/errors                        | 1.19 KB   | 232.68 B   | 12.5          | 0.6
	ember-data/setup-container                        | 503.00 B  | 96.17 B    | 5.2           | 0.2
	ember-data/-private/core                          | 321.00 B  | 61.37 B    | 3.3           | 0.1
	ember-data/relationships                          | 318.00 B  | 60.80 B    | 3.3           | 0.1
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 52.38 B    | 2.8           | 0.1
	ember-data/serializers/json-api                   | 251.00 B  | 47.99 B    | 2.6           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 46.84 B    | 2.5           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 46.46 B    | 2.5           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 46.46 B    | 2.5           | 0.1
	ember-data/transform                              | 241.00 B  | 46.07 B    | 2.5           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 45.31 B    | 2.4           | 0.1
	ember-data/serializer                             | 232.00 B  | 44.35 B    | 2.4           | 0.1
	ember-data/adapter                                | 226.00 B  | 43.21 B    | 2.3           | 0.1
	ember-data/model                                  | 222.00 B  | 42.44 B    | 2.3           | 0.1
	ember-data/store                                  | 222.00 B  | 42.44 B    | 2.3           | 0.1
	ember-data/attr                                   | 218.00 B  | 41.68 B    | 2.2           | 0.1
	ember-data/version                                | 162.00 B  | 30.97 B    | 1.7           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '6.66 KB' │
│  compressed  │ '1.27 KB' │
│ % Of Library │   '3.2'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 2.88 KB   | 563.84 B   | 43.3          | 1.4
	ember-inflector/lib/system/inflections            | 1.59 KB   | 311.08 B   | 23.9          | 0.8
	ember-inflector/index                             | 473.00 B  | 90.43 B    | 6.9           | 0.2
	ember-inflector/lib/system                        | 471.00 B  | 90.05 B    | 6.9           | 0.2
	ember-inflector/lib/helpers/pluralize             | 373.00 B  | 71.31 B    | 5.5           | 0.2
	ember-inflector/lib/system/string                 | 318.00 B  | 60.80 B    | 4.7           | 0.1
	ember-inflector/lib/utils/make-helper             | 308.00 B  | 58.88 B    | 4.5           | 0.1
	ember-inflector/lib/helpers/singularize           | 296.00 B  | 56.59 B    | 4.3           | 0.1

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.70 KB'  │
│  compressed  │ '528.66 B' │
│ % Of Library │   '1.3'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.21 KB   | 433.25 B   | 82.0          | 1.1
	@ember-data/debug/setup                           | 499.00 B  | 95.40 B    | 18.0          | 0.2

@runspired runspired force-pushed the runspired/simpler-relationships branch from 52ce23c to fc731d3 Compare April 30, 2021 20:42
@github-actions
Copy link

github-actions bot commented Apr 30, 2021

Performance Report for 66f5e79

Scenario - materialization: ✅ Performance improved

✅ duration
phase estimated improvement -408ms [-428ms to -386ms] OR -11.47% [-12.02% to -10.84%]
☑️ Phase [navigationStart] => [start-find-all]
phase no difference [-7ms to 11ms]
✅ Phase [start-find-all] => [start-materialization]
phase estimated improvement -310ms [-323ms to -296ms] OR -15.27% [-15.94% to -14.62%]
✅ Phase [start-materialization] => [end-materialization]
phase estimated improvement -123ms [-129ms to -116ms] OR -12.02% [-12.7% to -11.39%]
⚠️ Phase [end-materialization] => [Test End]
phase estimated regression +18ms [15ms to 23ms] OR +24.69% [21.18% to 31.57%]

Scenario - unload: ✅ Performance improved

✅ duration
phase estimated improvement -510ms [-526ms to -494ms] OR -7.11% [-7.33% to -6.88%]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-9ms to 5ms]
✅ Phase [start-push-payload] => [start-unload-records]
phase estimated improvement -327ms [-341ms to -316ms] OR -14.78% [-15.38% to -14.26%]
✅ Phase [start-unload-records] => [end-unload-records]
phase estimated improvement -180ms [-185ms to -175ms] OR -4.41% [-4.53% to -4.28%]
⚠️ Phase [end-unload-records] => [Test End]
phase estimated regression +2ms [1ms to 2ms] OR +2.34% [1.77% to 2.85%]

Scenario - destroy: ✅ Performance improved

✅ duration
phase estimated improvement -503ms [-518ms to -487ms] OR -12.2% [-12.58% to -11.84%]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-7ms to 9ms]
✅ Phase [start-push-payload] => [start-destroy-records]
phase estimated improvement -325ms [-335ms to -314ms] OR -14.63% [-15.1% to -14.13%]
✅ Phase [start-destroy-records] => [end-destroy-records]
phase estimated improvement -179ms [-184ms to -174ms] OR -17.34% [-17.83% to -16.87%]
⚠️ Phase [end-destroy-records] => [Test End]
phase estimated regression +2ms [2ms to 3ms] OR +2.83% [2.39% to 3.3%]

Scenario - add-children: ✅ Performance improved

✅ duration
phase estimated improvement -191ms [-205ms to -176ms] OR -8.48% [-9.13% to -7.83%]
☑️ Phase [navigationStart] => [start-push-initial-payload]
phase no difference [-3ms to 22ms]
✅ Phase [start-push-initial-payload] => [start-push-update-payload]
phase estimated improvement -114ms [-121ms to -107ms] OR -12.72% [-13.52% to -11.88%]
✅ Phase [start-push-update-payload] => [end-push-update-payload]
phase estimated improvement -75ms [-77ms to -72ms] OR -18.34% [-19.03% to -17.68%]
✅ Phase [end-push-update-payload] => [Test End]
phase estimated improvement -8ms [-11ms to -6ms] OR -6.02% [-7.86% to -4.51%]

Scenario - unused-relationships: ✅ Performance improved

✅ duration
phase estimated improvement -343ms [-360ms to -327ms] OR -10.79% [-11.33% to -10.29%]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-7ms to 12ms]
✅ Phase [start-push-payload] => [end-push-payload]
phase estimated improvement -347ms [-359ms to -334ms] OR -15.39% [-15.93% to -14.8%]
☑️ Phase [end-push-payload] => [Test End]
phase no difference [-2ms to 2ms]

flatten belongs-to relationship

fix: implicit inverse key gen needs to utilize the related type for uniqueness
@runspired runspired force-pushed the runspired/simpler-relationships branch from 07c659c to 66f5e79 Compare April 30, 2021 22:42
Copy link
Contributor

@snewcomer snewcomer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:nods again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏷️ perf PRs that improve performance in a notable way
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants