No, you're comparing how much it takes to call a function and how it takes to create a thread to call this function while another thread checks if the thread function has ended.
If you want to compare performance of, lets say, 100 calculations using one thread or two threads, you sould implement it this way:
Single thread:
1.- Time mark
2.- Perform 100 iterations
3.- Get result
Duble threaded:
1.- Time mark
2.- Start a secondary thread to do 50 calculations
3.- MEANWHILE main thread performs 50 calculations MORE
4.- wait for the secondary thread to end (when the main thread has already ended)
5.- return results.
You should take into consideration the words MEANWHILE and MORE. That's where the speed diference may come :D I hope it is clear, didn't know how to make a step by step schema for this.
If you want to compare performance of, lets say, 100 calculations using one thread or two threads, you sould implement it this way:
Single thread:
1.- Time mark
2.- Perform 100 iterations
3.- Get result
Duble threaded:
1.- Time mark
2.- Start a secondary thread to do 50 calculations
3.- MEANWHILE main thread performs 50 calculations MORE
4.- wait for the secondary thread to end (when the main thread has already ended)
5.- return results.
You should take into consideration the words MEANWHILE and MORE. That's where the speed diference may come :D I hope it is clear, didn't know how to make a step by step schema for this.