There is no real speed difference. They are really all the same to the compiler. The difference is with the human beings trying to use and read your code.
For me that makes bool, true, and false the best choice in C++ code. In C code, there are some compilers around that don't support bool (I often have to work with old systems), so I might go with the defines in some circumstances.