I’m working on a project that is a dynamic website that recalculates GANTT charts from a project server for interrelated projects. There are thousands of projects, each with thousands of steps that can have hundreds of states. Every step changed modifies the overall project timeline across thousands of projects. Every project is modified several times a day.
Client: Why does it take 45 seconds to display a page?
Me: Because it calculates the project timeline on all of the current entries on the project server. The project server has no way of knowing what the current state is of the project timeline until it does the calculation because the projects are constantly being modified. The calculation is initiated when you load the page, and it takes about 45 seconds.
Client: Why don’t you precalculate every possible permutation across every project and simply write out a page that reflects that state, and instead of calculating every time, you just display the page that matches?
Me: (doing the math in my head) The number of possible output pages would exceed the number of atoms in the known universe. In addition, to precalculate it all would require a supercomputer running for thousands of years.
Client: (patronizing) So? A web page is just bits on a hard drive, not actual physical atoms. All you have to do is buy some more hard drives and some more CPU’s. You should know this.