Pergunta

My question is, knowing everything there is to know about several systems(CPU and GPU stats, OS), is it possible to approximate when each system will finish a specific processing operation? And if it is, could you please share some resources as to how one could do that?

For example is it possible to know approximately when a system will finish a rendering operation? (if we know the rendering algorithm and software, along with the complexity of the project)

Foi útil?

Solução

Quote from Motorola, 1986, 68020 processor manual: “Estimating precise execution times is very difficult, even if you understand the processor completely”.

That was a relatively primitive processor. Nowadays it is practically impossible.

What you can do: Measure.

Outras dicas

If you can break your operation down to assembly-level, it should be possible to estimate execution time.

Since each machines assembly-code can be easily translated to its respective machine instructions, you can simply "count" the number of clock-cycles a piece of software would take to run. This approach is sometimes used on simple processors running simple programs (e.g. micro-controllers), when precise timing is essential.

However keep in mind:

  1. Every processor architecture has it's very unique way of handling high-level operations. This means the amount of work, required to "estimate" the runtime of your high-level code on different machines would be insane.

  2. That modern computing systems usually run your application on top of an OS. This additional layer of indirection makes it impossible to "guess" when your code will be executed and thus how quickly it will finish.

TL;DR No, you probably won't be able to know, when your software will be finished rendering something without testing it.

Licenciado em: CC-BY-SA com atribuição
scroll top