Startup performance of DBIx::Class
In a project I was working on, I had some performance problems to startup a DBIx::Class schema with about 75 sources. It took about 19 seconds to startup.
After a quick thread in the mailing list, the startup time is now 2 seconds.
The two-part solution is this:
- move all your
load_components()
into a common class and use that class as the base for your sources; - use the schema provided
load_classes()
, its very fast. If you need per-source tweaking, do it afterwards looping overSchema->sources()
.
Many thanks to the dbix-class mailing list, in particular mst and Hartmaier Alexander for the tips in the right direction.