fscanf has to parse and execute the format string. It might be interesting to compare your custom ascii-to-float converter to one which calls strtof in a loop.
It would also be interesting to compare it to C++'s ">>" operators; one of the reasons to introduce them was exactly to avoid run-time parsing of format strings.