diff --git a/dev/components/web-tests/performance.vue b/dev/components/web-tests/performance.vue new file mode 100644 index 000000000000..db5c2da95320 --- /dev/null +++ b/dev/components/web-tests/performance.vue @@ -0,0 +1,305 @@ + + + diff --git a/dev/components/web-tests/performance/GeneratorPf.js b/dev/components/web-tests/performance/GeneratorPf.js new file mode 100644 index 000000000000..fa51e38bfc87 --- /dev/null +++ b/dev/components/web-tests/performance/GeneratorPf.js @@ -0,0 +1,24 @@ +// Dynamic Component Generator +// In separate functional component because I did not find a way to inject vnodes directly. +// import GeneratorMixin from './generator-mixin' +export default { + name: 'generator-pf', + // mixins: [GeneratorMixin], + functional: true, + + render (h, ctx) { + // ctx.props + let props = ctx.props.props + let vnodes = [] + for (let i = 0; i < ctx.props.repeat; i++) { + props.key = i + vnodes.push( + h(ctx.props.name, { + props: props + }) + ) + } + vnodes = h('div', {}, vnodes) + return vnodes + } +} diff --git a/dev/components/web-tests/performance/GeneratorPr.js b/dev/components/web-tests/performance/GeneratorPr.js new file mode 100644 index 000000000000..58cc5b1b8f67 --- /dev/null +++ b/dev/components/web-tests/performance/GeneratorPr.js @@ -0,0 +1,27 @@ +// Dynamic Component Generator +// In separate functional component because I did not find a way to inject vnodes directly. +import GeneratorMixin from './generator-mixin' +export default { + name: 'generator-pr', + mixins: [GeneratorMixin], + props: { + name: String, + repeat: Number, + props: Object + }, + + render (h) { + let props = this.props + let vnodes = [] + for (let i = 0; i < this.repeat; i++) { + props.key = i + vnodes.push( + h(this.name, { + props: this.props + }) + ) + } + vnodes = h('div', {}, vnodes) + return vnodes + } +} diff --git a/dev/components/web-tests/performance/PerfTestPf.js b/dev/components/web-tests/performance/PerfTestPf.js new file mode 100644 index 000000000000..a282674ff8be --- /dev/null +++ b/dev/components/web-tests/performance/PerfTestPf.js @@ -0,0 +1,13 @@ +// Component Type: Programming, Functional +import PerfMixin from './perf-mixin' +export default { + name: 'perf-test-pf', + functional: true, + mixins: [PerfMixin], + + render (h, ctx) { + // console.log('q-perf-test-pf render') + let props = ctx.props + return h('span', '.' + props.displayString + props.computeStringOutput() + props.workFunction(props.renderWork) + ' ') + } +} diff --git a/dev/components/web-tests/performance/PerfTestPr.js b/dev/components/web-tests/performance/PerfTestPr.js new file mode 100644 index 000000000000..62246cddaa3c --- /dev/null +++ b/dev/components/web-tests/performance/PerfTestPr.js @@ -0,0 +1,11 @@ +// Component Type: Programming, Regular +import PerfMixin from './perf-mixin' +export default { + name: 'perf-test-pr', + mixins: [PerfMixin], + + render (h) { + // console.log('q-perf-test-pr render') + return h('span', '.' + this.displayString + this.computeStringOutput() + this.workFunction(this.renderWork) + ' ') + } +} diff --git a/dev/components/web-tests/performance/PerfTestTf.vue b/dev/components/web-tests/performance/PerfTestTf.vue new file mode 100644 index 000000000000..a4d90ecc71f0 --- /dev/null +++ b/dev/components/web-tests/performance/PerfTestTf.vue @@ -0,0 +1,12 @@ +// Component Type: Template, Functional + + + diff --git a/dev/components/web-tests/performance/PerfTestTr.vue b/dev/components/web-tests/performance/PerfTestTr.vue new file mode 100644 index 000000000000..ababa554dcfc --- /dev/null +++ b/dev/components/web-tests/performance/PerfTestTr.vue @@ -0,0 +1,12 @@ +// Component Type: Programming, Regular + + + diff --git a/dev/components/web-tests/performance/generator-mixin.js b/dev/components/web-tests/performance/generator-mixin.js new file mode 100644 index 000000000000..66dc80505b9e --- /dev/null +++ b/dev/components/web-tests/performance/generator-mixin.js @@ -0,0 +1,13 @@ +import PerfTestPf from './PerfTestPf' +import PerfTestPr from './PerfTestPr' +import PerfTestTf from './PerfTestTf' +import PerfTestTr from './PerfTestTr' + +export default { + components: { + PerfTestPf, + PerfTestPr, + PerfTestTf, + PerfTestTr + } +} diff --git a/dev/components/web-tests/performance/perf-mixin.js b/dev/components/web-tests/performance/perf-mixin.js new file mode 100644 index 000000000000..25a9001751cb --- /dev/null +++ b/dev/components/web-tests/performance/perf-mixin.js @@ -0,0 +1,16 @@ +export default { + props: { + renderWork: Number, + displayString: String, + computeWork: Number, + computeString: String, + workFunction: Function, + computeStringOutput: Function + }, + computed: { + computeStringOutputComputed: function () { + this.workFunction(this.computeWork) + return this.computeString + } + } +}