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

fix: move defaultValue into RecordData to better encapsulate and prevent eager instantiations #8117

Merged
merged 2 commits into from
Aug 12, 2022

Conversation

runspired
Copy link
Contributor

This prevents needing to instantiate and iterate the record to retrieve default values. We may end up needing to deprecate record-access, but the hope is that folks generally weren't using the undocumented arguments passed to defaultValue.

Additionally, this lets us remove the un-spec'd hasAttr from V1 cache which was necessary to distinguish between undefined meaning never-set and undefined meaning set to undefined for default-value determination.

@runspired runspired added 🎯 canary PR is targeting canary (default) 🏷️ cleanup This PR primarily removes deprecated functionality labels Aug 12, 2022
@github-actions
Copy link

github-actions bot commented Aug 12, 2022

Asset Size Report for 1e2de29

Modern Builds

✅ EmberData shrank by -53.0 B (-78.0 B compressed)

Warnings

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

Changeset


EmberData +167.19 KB -53.0 B (+35.02 KB -78.0 B compressed)
    @ember-data/model +45.7 KB -145.0 B (+9.57 KB -213.4 B compressed)
        @ember-data/model/-private +45.23 KB -145.0 B (+9.47 KB -213.4 B compressed)
    @ember-data/store +42.82 KB -85.0 B (+8.97 KB -125.09 B compressed)
        @ember-data/store/-private +41.82 KB -85.0 B (+8.76 KB -125.09 B compressed)
    @ember-data/record-data +24.23 KB +177.0 B (+5.07 KB +260.49 B compressed)
        @ember-data/record-data/-private +24.23 KB +177.0 B (+5.07 KB +260.49 B compressed)

Full Asset Analysis (Modern)

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


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

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '45.70 KB' │
│  compressed  │ '9.57 KB'  │
│ % Of Library │   '27.3'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/model/-private                        | 45.23 KB  | 9.47 KB    | 99.0          | 27.1
	@ember-data/model/index                           | 486.00 B  | 101.79 B   | 1.0           | 0.3

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '42.82 KB' │
│  compressed  │ '8.97 KB'  │
│ % Of Library │   '25.6'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/store/-private                        | 41.82 KB  | 8.76 KB    | 97.7          | 25.0
	@ember-data/store/index                           | 1022.00 B | 214.06 B   | 2.3           | 0.6

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

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '20.42 KB' │
│  compressed  │ '4.28 KB'  │
│ % Of Library │   '12.2'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                       | 7.36 KB   | 1.54 KB    | 36.0          | 4.4
	@ember-data/serializer/-private                   | 5.60 KB   | 1.17 KB    | 27.4          | 3.3
	@ember-data/serializer/json-api                   | 3.79 KB   | 812.89 B   | 18.6          | 2.3
	@ember-data/serializer/rest                       | 2.87 KB   | 614.53 B   | 14.0          | 1.7
	@ember-data/serializer/index                      | 611.00 B  | 127.97 B   | 2.9           | 0.4
	@ember-data/serializer/transform                  | 215.00 B  | 45.03 B    | 1.0           | 0.1

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '15.93 KB' │
│  compressed  │ '3.34 KB'  │
│ % Of Library │   '9.5'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                          | 7.88 KB   | 1.65 KB    | 49.5          | 4.7
	@ember-data/adapter/-private                      | 3.79 KB   | 811.84 B   | 23.8          | 2.3
	@ember-data/adapter/error                         | 1.82 KB   | 390.84 B   | 11.4          | 1.1
	@ember-data/adapter/index                         | 1.41 KB   | 302.87 B   | 8.9           | 0.8
	@ember-data/adapter/json-api                      | 1.03 KB   | 221.81 B   | 6.5           | 0.6

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '8.66 KB' │
│  compressed  │ '1.81 KB' │
│ % Of Library │   '5.2'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.11 KB   | 452.21 B   | 24.4          | 1.3
	ember-data/-private                               | 1.75 KB   | 374.71 B   | 20.2          | 1.0
	ember-data/adapters/errors                        | 1.19 KB   | 254.90 B   | 13.7          | 0.7
	ember-data/setup-container                        | 368.00 B  | 77.07 B    | 4.2           | 0.2
	ember-data/relationships                          | 318.00 B  | 66.60 B    | 3.6           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 57.39 B    | 3.1           | 0.2
	ember-data/serializers/json-api                   | 251.00 B  | 52.57 B    | 2.8           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 51.31 B    | 2.8           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 50.89 B    | 2.7           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 50.89 B    | 2.7           | 0.1
	ember-data/transform                              | 241.00 B  | 50.47 B    | 2.7           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 49.64 B    | 2.7           | 0.1
	ember-data/serializer                             | 232.00 B  | 48.59 B    | 2.6           | 0.1
	ember-data/adapter                                | 226.00 B  | 47.33 B    | 2.5           | 0.1
	ember-data/model                                  | 222.00 B  | 46.49 B    | 2.5           | 0.1
	ember-data/store                                  | 222.00 B  | 46.49 B    | 2.5           | 0.1
	ember-data/attr                                   | 218.00 B  | 45.66 B    | 2.5           | 0.1
	ember-data/version                                | 161.00 B  | 33.72 B    | 1.8           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '6.67 KB' │
│  compressed  │ '1.40 KB' │
│ % Of Library │   '4.0'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 2.96 KB   | 635.48 B   | 44.4          | 1.8
	ember-inflector/lib/system/inflections            | 1.59 KB   | 340.78 B   | 23.8          | 1.0
	ember-inflector/lib/system                        | 471.00 B  | 98.65 B    | 6.9           | 0.3
	ember-inflector/index                             | 379.00 B  | 79.38 B    | 5.6           | 0.2
	ember-inflector/lib/helpers/pluralize             | 369.00 B  | 77.28 B    | 5.4           | 0.2
	ember-inflector/lib/utils/make-helper             | 332.00 B  | 69.53 B    | 4.9           | 0.2
	ember-inflector/lib/system/string                 | 318.00 B  | 66.60 B    | 4.7           | 0.2
	ember-inflector/lib/helpers/singularize           | 296.00 B  | 61.99 B    | 4.3           | 0.2

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.77 KB'  │
│  compressed  │ '593.38 B' │
│ % Of Library │   '1.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.27 KB   | 487.60 B   | 82.2          | 1.4
	@ember-data/debug/setup                           | 505.00 B  | 105.77 B   | 17.8          | 0.3

Modern Builds (No Rollup)

☑️ EmberData has not changed in size

If any packages had changed sizes they would be listed here.

Changeset



Full Asset Analysis (Modern)

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


Library: EmberData
┌────────────┬──────────┐
│  (index)   │  Values  │
├────────────┼──────────┤
│   bytes    │ '0.00 B' │
│ compressed │ '1.00 B' │
│  packages  │    0     │
│  modules   │    0     │
└────────────┴──────────┘

@github-actions
Copy link

Performance Report for 1e2de29

Scenario - materialization: ☑️ Performance is stable

☑️ duration
phase no difference [-13ms to 10ms]
☑️ Phase [navigationStart] => [start-find-all]
phase no difference [0ms to 7ms]
☑️ Phase [start-find-all] => [start-materialization]
phase no difference [-6ms to 4ms]
☑️ Phase [start-materialization] => [end-materialization]
phase no difference [-5ms to 2ms]
☑️ Phase [end-materialization] => [Test End]
phase no difference [0ms to 0ms]

Scenario - unload: ☑️ Performance is stable

☑️ duration
phase no difference [-16ms to 8ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-6ms to 4ms]
☑️ Phase [start-push-payload] => [start-unload-records]
phase no difference [-6ms to 3ms]
☑️ Phase [start-unload-records] => [end-unload-records]
phase no difference [-1ms to 3ms]
☑️ Phase [end-unload-records] => [Test End]
phase no difference [0ms to 0ms]

Scenario - destroy: ✅ Performance improved

✅ duration
phase estimated improvement -15ms [-29ms to -3ms] OR -1.06% [-2.03% to -0.22%]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-11ms to 1ms]
☑️ Phase [start-push-payload] => [start-destroy-records]
phase no difference [-6ms to 3ms]
✅ Phase [start-destroy-records] => [end-destroy-records]
phase estimated improvement -4ms [-6ms to -1ms] OR -1.07% [-1.74% to -0.35%]
☑️ Phase [end-destroy-records] => [Test End]
phase no difference [0ms to 0ms]

Scenario - add-children: ☑️ Performance is stable

☑️ duration
phase no difference [-9ms to 14ms]
☑️ Phase [navigationStart] => [start-push-initial-payload]
phase no difference [-9ms to 11ms]
☑️ Phase [start-push-initial-payload] => [start-push-update-payload]
phase no difference [-2ms to 3ms]
⚠️ Phase [start-push-update-payload] => [end-push-update-payload]
phase estimated regression +2ms [1ms to 3ms] OR +1.92% [0.57% to 3.33%]
☑️ Phase [end-push-update-payload] => [Test End]
phase no difference [0ms to 0ms]

Scenario - unused-relationships: ☑️ Performance is stable

☑️ duration
phase no difference [-14ms to 12ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-5ms to 7ms]
☑️ Phase [start-push-payload] => [end-push-payload]
phase no difference [-7ms to 3ms]
☑️ Phase [end-push-payload] => [Test End]
phase no difference [0ms to 0ms]

@runspired runspired merged commit d606a22 into master Aug 12, 2022
@delete-merged-branch delete-merged-branch bot deleted the runspired/cache-supplies-default-value branch August 12, 2022 10:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎯 canary PR is targeting canary (default) 🏷️ cleanup This PR primarily removes deprecated functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant