Skip to content

Demonstrates how overriding equals puts stress on dart2js type inference

License

Notifications You must be signed in to change notification settings

robbecker-wf/stress_equals

Repository files navigation

stress_equals

Demonstrates how overriding equals puts stress on dart2js type inference

What it does

Running gen.dart [n] will generate a lib/src/classes.dart and a bin/main.dart that has n classes that override the equals (and hashCode) method. The main method uses them all so they are not tree-shaken out.

The point of this is to be able to reproduce a more complex app that has a lot of equals methods, or to compare compile time with the growth of the number of classes with equals methods.

How to use it

You can run the try shell script with an n paramter for the number of classes to generate. It's just a shortcut for running

dart gen.dart [n]
dart2js -v -o bin/main.dart.js -O3 --csp bin/main.dart

Findings

Ran this on a 2013 Macbook Pro w/ 16GB. The compile time is exponential with the number of equals methods, due almost entirely to the increase in time spent in the inference stage of dart2js optimization.

About

Demonstrates how overriding equals puts stress on dart2js type inference

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published