From aaafc9abe3a0334d11bc65b79a0fa8bc0ddcb709 Mon Sep 17 00:00:00 2001 From: Elliott Marquez Date: Fri, 6 Mar 2020 16:35:29 -0800 Subject: [PATCH] perf(list): benchmarks for list and list-item (#977) * perf(list): benchmarks for list and list-item * chore: run formatter --- package.json | 2 +- test/src/benchmark/list-item/basic.ts | 26 +++++++++++++++++ test/src/benchmark/list/basic.ts | 42 +++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 test/src/benchmark/list-item/basic.ts create mode 100644 test/src/benchmark/list/basic.ts diff --git a/package.json b/package.json index 68391c8a1..542a5d659 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "powerwash:ts": "rm packages/*/*.js & rm packages/*/*.js.map & rm packages/*/*.d.ts & rm packages/*/.tsbuildinfo", "powerwash:styling": "rm packages/*/src/*-css.ts", "powerwash:bench": "rm -rf test/lib & rm test/.tsbuildinfo*", - "powerwash": "npm run powerwash:ts & npm run powerwash:styling * npm run powerwash:bench && rm -rf node_modules", + "powerwash": "npm run powerwash:ts & npm run powerwash:styling & npm run powerwash:bench && rm -rf node_modules", "watch": "npm run build && node scripts/watcher.js", "watch:tests": "tsc --build test/tsconfig.json -w & tsc --build test/tsconfig-node.json -w" }, diff --git a/test/src/benchmark/list-item/basic.ts b/test/src/benchmark/list-item/basic.ts new file mode 100644 index 000000000..fb659e255 --- /dev/null +++ b/test/src/benchmark/list-item/basic.ts @@ -0,0 +1,26 @@ +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@material/mwc-list/mwc-list-item'; + +import {html} from 'lit-html'; + +import {measureFixtureCreation} from '../../util/helpers'; + +measureFixtureCreation( + html`Apple`, { + numRenders: 100, + }); diff --git a/test/src/benchmark/list/basic.ts b/test/src/benchmark/list/basic.ts new file mode 100644 index 000000000..b65290da2 --- /dev/null +++ b/test/src/benchmark/list/basic.ts @@ -0,0 +1,42 @@ +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@material/mwc-list'; +import '@material/mwc-list/mwc-list-item'; + +import {List} from '@material/mwc-list'; +import {ListItem} from '@material/mwc-list/mwc-list-item'; +import {html} from 'lit-html'; + +import {measureFixtureCreation} from '../../util/helpers'; + +const renderCheck = async (root: ShadowRoot) => { + const list = root.firstElementChild as List; + const lastItem = list.lastElementChild as ListItem; + + await lastItem.updateComplete; + await list.updateComplete; +}; + +measureFixtureCreation( + html` + + + Apple + Banana + Cucumber + `, + {renderCheck});