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:
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.
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.