Por cierto, tu código es MUY parecido al mío, y tu mensaje ha sido modificado varias veces. A ver, no seamos... ¬¬
Bueno mi codigo se parece al tuyo por que hace lo mismo más que nada. Si te he de ser sincero si que lo he modificado basandome en tu codigo, simplemente para pasarle la cadena directamente a la función ya que no se porque habia declarado una variable dentro del main del programa para pasarla a la función.
A parte de esto tenia la intención de cambiar el while por un for para ver si iba más rapido, pero lo comprobe con la manera de RHL y la verdad que a parte de que no siempre da el mismo valor era igual de rapido el while hasta diria que daba más 0.003 ms xD.
Por cierto si mi función se parece a la tuya es por que tu me la hayas copiado porque la he posteado antes y solo he cambiado lo que te comento.
@RHL: Tal vez no he hecho bien la comprobación porque me sale 0.001, 0.002 dependiendo de la vez que lo ejecute.