que he hecho esto muchas veces. Si tiene un IDE o un ICE, there is a technique, eso requiere cierto esfuerzo manual, pero funciona sin falta.
Advertencia: los programadores modernos odian esto, y voy a obtener una votación negativa. Ellos aman sus herramientas. Pero realmente funciona, y no siempre tienes las buenas herramientas.
Supongo que en su caso el código es algo así como DSP o video que se ejecuta en un temporizador y tiene que ser rápido. Supongamos que lo que ejecuta en cada tic del temporizador es la subrutina A. Escriba un código de prueba para ejecutar la subrutina A en un bucle simple, digamos 1000 veces, o lo suficiente como para hacer esperar al menos varios segundos.
Mientras se está ejecutando, detenga aleatoriamente con una tecla de pausa y muestree la pila de llamadas (no solo el contador del programa) y grábela. (Esa es la parte manual.) Haga esto algunas veces, como 10. Una vez no es suficiente.
Ahora busque las similitudes entre las muestras de la pila. Busque cualquier instrucción o instrucción de llamada que aparezca en al menos 2 muestras. Habrá muchos de estos, pero algunos de ellos estarán en un código que podrías optimizar.
Hazlo y obtendrás una buena aceleración, garantizada. Las 1000 iteraciones tomarán menos tiempo.
La razón por la que no necesita muchas muestras es que no está buscando cosas pequeñas. Como si usted viera una instrucción de llamada en particular en 5 de 10 muestras, es responsable de aproximadamente el 50% del tiempo total de ejecución. Más muestras le dirían con mayor precisión cuál es el porcentaje, si realmente desea saberlo. Si eres como yo, todo lo que quieres saber es dónde está, para que puedas arreglarlo y pasar al siguiente.
Haga esto hasta que no pueda encontrar nada más para optimizar, y estará a su velocidad máxima o cerca de ella.