I've been wondering this for some time. As the title say, which is faster, the actual function or simply raising to the half power?
UPDATE
This is not a matter of premature optimization. This is simply a question of how the underlying code actually works. What is the theory of how Python code works?
I sent Guido van Rossum an email cause I really wanted to know the differences in these methods.
My email:

There are at least 3 ways to do a square root in Python: math.sqrt, the
  '**' operator and pow(x,.5).  I'm just curious as to the differences in
  the implementation of each of these.  When it comes to efficiency which
  is better?

His response:

pow and ** are equivalent; math.sqrt doesn't work for complex numbers,
  and links to the C  sqrt() function. As to which one is
  faster, I have no idea...
What would be even faster is if you went into math.py and copied the function "sqrt" into your program. It takes time for your program to find math.py, then open it, find the function you are looking for, and then bring that back to your program. If that function is faster even with the "lookup" steps, then the function itself has to be awfully fast. Probably will cut your time in half. IN summary:

Go to math.py
Find the function "sqrt"
Copy it
Paste function into your program as the sqrt finder.
Time it.
Which is faster in Python: x**.5 or math.sqrt(x)?