Why does the same Rule Calculating The Sell Price Of A Product fire multiple times? I'm having dreadful performance with Commerce Kickstart 2. Trying to troubleshoot.

I noticed that when viewing any Product in the catalog, the Rules Evaluation log looks like the log below.

Questions:
1. Why is the event Calculating the sell price of a product firing multiple times?


Why is the rule "Apply a discount to a given order" firing? The product I'm viewing has nothing to do with the reaction rule or the cart?


This adding a lot of unneeded overhead, right? How do I stop it?


    0 ms Reacting on event Calculating the sell price of a product.
    7.329 ms Evaluating conditions of rule Unset the price of disabled products in the cart. [edit]
    7.698 ms The condition data_is_empty evaluated to FALSE [edit]
    7.903 ms The condition entity_has_field evaluated to TRUE [edit]
    8.669 ms The condition data_is evaluated to FALSE [edit]
    8.676 ms AND evaluated to FALSE.
    8.694 ms Finished reacting on event Calculating the sell price of a product.

0 ms Reacting on event Apply a discount to a given order.
0.256 ms Evaluating conditions of rule 10% Of AH-10. [edit]
0.854 ms The condition commerce_order_contains_products evaluated to FALSE [edit]
0.862 ms AND evaluated to FALSE.
0.876 ms Finished reacting on event Apply a discount to a given order.
0 ms Reacting on event Calculating the sell price of a product.
0.164 ms Evaluating conditions of rule Unset the price of disabled products in the cart. [edit]
0.317 ms The condition data_is_empty evaluated to TRUE [edit]
0.324 ms AND evaluated to FALSE.
0.336 ms Finished reacting on event Calculating the sell price of a product.
0 ms Reacting on event Calculating the sell price of a product.
0.376 ms Evaluating conditions of rule Unset the price of disabled products in the cart. [edit]
0.656 ms The condition data_is_empty evaluated to TRUE [edit]
0.673 ms AND evaluated to FALSE.
0.7 ms Finished reacting on event Calculating the sell price of a product.
0 ms Reacting on event Calculating the sell price of a product.
0.223 ms Evaluating conditions of rule Unset the price of disabled products in the cart. [edit]
0.407 ms The condition data_is_empty evaluated to TRUE [edit]
0.42 ms AND evaluated to FALSE.
0.439 ms Finished reacting on event Calculating the sell price of a product.
0 ms Reacting on event Calculating the sell price of a product.
0.221 ms Evaluating conditions of rule Unset the price of disabled products in the cart. [edit]
0.384 ms The condition data_is_empty evaluated to TRUE [edit]
0.393 ms AND evaluated to FALSE.
0.418 ms Finished reacting on event Calculating the sell price of a product.

0 ms Reacting on event Calculating the sell price of a product.
0.398 ms Evaluating conditions of rule Unset the price of disabled products in the cart. [edit]
0.67 ms The condition data_is_empty evaluated to TRUE [edit]
0.687 ms AND evaluated to FALSE.
0.714 ms Finished reacting on event Calculating the sell price of a product.
This is because the price is calculated during preparation for display where the field is rendered on the page, for the Add to Cart form to determine product availability, and for recalculation of any instance of that product in your cart. I believe we tried caching calculated prices in the product entity at one point in time to avoid duplicate calculation, but that obviously didn't stick. I don't have a solid recommendation here, just wanted to provide the info requested. Also, note that cart price refreshing is adjustable but is intended to happen in realtime with the full cart context. I'd think you could safely find a way to eliminate the duplicate calculation between the price field and cart form, but you'd want to do it without interfering with the cart refresh.