Pour les PICs type 16, c'est normal que le C n'est pas efficace, ceux ci ont une architecture inadaptée au compilateur C.
Par contre sur des procs type AVR ou PIC plus évolués, c'est nettement mieux (et pas de soucis de C++).
La principale raison de l'abandon de l'assembleur c'est avant tout la réutilisation du code et la portabilité, bien plus importante aujourd'hui que les perfs elles mêmes. Tres tres peu de programmeurs sont amenés a travailler en asm pour les perfs, de toute façon dans ce cas, le langage n'est qu'un moyen, pas une finalité, et surtout pas une garantie de résultat. L'étude, le profilage et l'optimisation du code est bien souvent plus efficace.