Suponiendo que hablamos de los PICs gama baja
Depende. Todo depende. Al final voy a dar unas palabras que va a dejar por el suelo todo lo que dije!
Incrementar y decrementar en 1 es la operacion mas rapida que podes hacer, ya que hay instrucciones para eso.
Incrementar y decrementar en mas cantidad va a depender de que tan grande sea la varaible, pero usualmente es bastante rapido tambien
Multiplicar en el caso mas simple tendrias 2 shift + 1 suma ( se incrementa la cantidad segun los bytes del resultado ) por cada bit. Es decir si tenes 2 numeros de 8bits y multiplicas lo mas simple es correr un numero fijarse si es uno el carry y luego sumar en el caso que sea 1, sino se produce otro desplazamiento. Esa seria la forma mas facil de multiplicar y dentro de todo es algo rapido. Por supuesto el compilador si es lo suficientemente inteligente puede buscar muchas formas de resolverlo, ejemplo multiplicar por 5 una variable llamada "var" seria lo mismo que hacer:
var = (var << 2) + var;
Eso hace aun mas rapido la operacion. Tambien se podria hacer por sumas sucesivas, pero si tuviera que multiplicar: 127 * 210
necesitaria como minimo 127 sumas. lo cual es un poco absurdo, mientras que con desplazamientos hubiera sido mucho mas sencillo y rapido. Y aun mas rapido hacer esto (siendo var 210):
var = (var << 7) - var;
Ahora dividir es otro cantar. Se puede hacer de distintas formas tambien, dividir por 10 , es lo mismo que multiplicarlo por 0.1 , por lo tanto si tuvieras una "tabla" o el compilador se manejara de esa forma podria simplemente multiplicar por 0.1, lo cual el algoritmo seria el de la multiplicacion.
Tambien podrias pensarlo como restas sucesivas, lo cual es valido en casos simples. Ejemplo tengo que pasar de un numero a BCD y tengo que sacar las decenas.
¿Que es mas simple? , restar 10 veces 10, o multiplicarlo por 0.1 o como se le ocurra al compilador.
Las restas sucesivas no tendrian sentido en algo asi:
78954465179810 / 10
------------------------------------------------
Hay PICs que poseen hardware para la multiplicacion normalmente son de 8x8, pero que con un poco de agregados de instrucciones logras de 16x16 bits o 16x32 sin complicarlo y de forma rapida. ( haciendo siempre multiplicaciones de 8x8 )
En fin:
Si estas programando en C como en cualquier lenguaje de alto nivel, deberia importarte poco el tema de cuantos ciclos tarda. Pero es bueno saber que podes reducirlo intentando hacer algo que es simple para el microcontrlador y no dejar que el compilador haga lo que desee a veces.
¿Como pensar de esa forma?
Conociendo al micrcontrolador, ASM es lo mejor para tratar de entender como funciona y sacarle el jugo al mismo. A pesar que no lo programes fluidamente, con conocer las instrucciones e imaginarte como tiene que hacer para realizar algo te puede dar una idea.
-------------------
Respecto a tu pregunta sobre la condicion if, va a depender de lo que tengas como condicion dentro de ese if. Una igualdad/desigualdad son 3 instruciones en ASM, Ahora si tenes varias condiciones dentro se puede complicar un poco mas y obviamente va a tener mas agregado de instrucciones.