Calculated fields will do this when there are lots of books..

Instead of using a calculated field which require a recalc every start (or data change). Use the Search and Replace {template} feature to populate a custom Static field. Save your search for a later
refresh/update of books
Only use the calculated field for more dynamic data (eg #read_progress)
Coloring rules will slow things down a tiny bit per book.
It all adds up.