futursolo / stylist-rs

A CSS-in-Rust styling solution for WebAssembly Applications
https://crates.io/crates/stylist
MIT License
370 stars 22 forks source link

Const stylesheet support #37

Closed WorldSEnder closed 2 years ago

WorldSEnder commented 2 years ago

Changes the usages of Vec in favor of const arrays.

WorldSEnder commented 2 years ago

Preliminary performance comparisons:

Benchmark old: Chrome runtime
Parse Simple (10,000,000 iterations): 495ms
Macro (Literal) Simple (10,000,000 iterations): 31ms
Macro (Inline) Simple (10,000,000 iterations): 35ms
Parse Simple, No Cache (100,000 iterations): 327ms
Parse Complex (1,000,000 iterations): 899ms
Macro (Literal) Complex (1,000,000 iterations): 490ms
Macro (Inline) Complex (1,000,000 iterations): 509ms
Parse Complex, No Cache (100,000 iterations): 336ms
Cached Lookup (1,000,000 iterations): 175ms
Cached Lookup, Big Sheet (100,000 iterations): 364ms
Mounting (2,000 iterations): 89ms
Benchmark new: Chrome runtime
Parse Simple (10,000,000 iterations): 530ms
Macro (Literal) Simple (10,000,000 iterations): 31ms
Macro (Inline) Simple (10,000,000 iterations): 32ms
Parse Simple, No Cache (100,000 iterations): 302ms
Parse Complex (1,000,000 iterations): 906ms
Macro (Literal) Complex (1,000,000 iterations): 134ms
Macro (Inline) Complex (1,000,000 iterations): 137ms
Parse Complex, No Cache (100,000 iterations): 338ms
Cached Lookup (1,000,000 iterations): 178ms
Cached Lookup, Big Sheet (100,000 iterations): 351ms
Mounting (2,000 iterations): 80ms
Benchmark old: Firefox runtime
Parse Simple (10,000,000 iterations): 627ms
Macro (Literal) Simple (10,000,000 iterations): 67ms
Macro (Inline) Simple (10,000,000 iterations): 67ms
Parse Simple, No Cache (100,000 iterations): 336ms
Parse Complex (1,000,000 iterations): 879ms
Macro (Literal) Complex (1,000,000 iterations): 677ms
Macro (Inline) Complex (1,000,000 iterations): 737ms
Parse Complex, No Cache (100,000 iterations): 341ms
Cached Lookup (1,000,000 iterations): 201ms
Cached Lookup, Big Sheet (100,000 iterations): 340ms
Mounting (2,000 iterations): 515ms
Benchmark new: Firefox runtime
Parse Simple (10,000,000 iterations): 625ms
Macro (Literal) Simple (10,000,000 iterations): 64ms
Macro (Inline) Simple (10,000,000 iterations): 75ms
Parse Simple, No Cache (100,000 iterations): 325ms
Parse Complex (1,000,000 iterations): 877ms
Macro (Literal) Complex (1,000,000 iterations): 172ms
Macro (Inline) Complex (1,000,000 iterations): 189ms
Parse Complex, No Cache (100,000 iterations): 340ms
Cached Lookup (1,000,000 iterations): 201ms
Cached Lookup, Big Sheet (100,000 iterations): 339ms
Mounting (2,000 iterations): 527ms