Skip to content

Consider removing mockup storage and other patterns from todoMVC #522

@lpardosixtosMs

Description

@lpardosixtosMs

Some of the patterns that we have on todoMVC have caught my attention recently, particularly that we do some kind of mockup storage in many of the variations, which is usually a JS array that requires a lot of splices in the delete100items step. I think as a general principal we should not exercise the same JS API too many times across the benchmark.

Another one that caught my eye was setting the display style in web components in JavaScript instead of using attribute selectors. I think the performance of the latter is a better optimization target.

I created this draft PR #521 so everyone can take a look (and test) the changes, copying the results here.

Label macos.arm64.local_0 macos.arm64.local_1 macos.arm64.local_2 macos.arm64.local_3
browser Google Chrome Microsoft Edge Firefox Safari
version 138.0.7204.158 138.0.3351.95 138.0.4 18.5.0.0.20621.2.5.11.8
os macos 15.5 arm64 macos 15.5 arm64 macos 15.5 arm64 macos 15.5 arm64
device MacBookPro17,1 MacBookPro17,1 MacBookPro17,1 MacBookPro17,1
cpu Apple M1 8 cores Apple M1 8 cores Apple M1 8 cores Apple M1 8 cores
runs 1 1 1 1
failed runs 0 0 0 0
TodoMVC-WebComponents 11.156666665772597 11.82666666706403 16.333333333333332 20.833333333333517
TodoMVC-WebComponents-Old 13.643333332240582 14.316666669150193 17.9 23.000000000000167
TodoMVC-WebComponents-Complex-DOM 14.856666666269302 14.879999998708566 21.833333333333332 26.400000000000258
TodoMVC-WebComponents-Old-Complex-DOM 18.479999998708568 17.890000000596046 25.033333333333335 27.766666666666666
Score 70.2810070365844 68.97575003170705 50.516728603241944 41.278491693043556

Comparison of sync and async steps:

image

EDIT: Updated perf numbers after fixing an important typo in the code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions