We have begun tackling the issue of performance and CPU usage of Cesium, specifically in regards to the frame rate and minimizing rendering when not necessary. We plan on breaking this task down into phases.
Initial Effort: This will cover the most common use cases for a cesium app: loading in terrain, imagery, and data. This new performance behavior will be opt in. The philosophy here is based on the assumption that the developer at the app level knows best where requests for a render frame are needed. There will be a public method you can call to request a render based on changes your app may need if you do opt into this more performance based mode. For example, when in this mode, turning on and off fog during your app, or changing the color of a primitive via the API will not trigger rendering a new frame automatically.
Later Effort: The plan at a later time would be to dive more deeply into the render and only trigger changes when the view itself changes. This requires a more extensive update, but changes to the lower level APIs (for example showing and hiding a primitive) would request a render frame automatically.
We are interested in hearing your input and any specific use cases you have in regards to Cesium CPU usage. Please let us know your thoughts!