I am designing an application to run a fishing tournament I am
hosting. Each fish entered will be given a point total based on the
length of the fish and the species of fish. Each species has a point
multiplier. For Example Trout have a multiplier of 10 so a 20 inch
Trout would have a score of 200.
My conundrum is in where and when do I calculate the points. The
options I have come up with so far:

Calculate when the fish is entered into the system. This seems
like the easiest but if I change the scoring recalculating the scores
is a bit troublesome. 
Calculate when displayed. Seems rather intensive CPU wise and
makes doing “Top 10” list rather troublesome.
I am leaning towards option 1 but I wanted to ping the community to
see if anyone has any brilliant ideas.
TIA
 Bill