If you don't have the knowledge to test for yourself which is faster, then you *definitely* shouldn't be worrying about it. As for safety, they're both *horrible*, and anyway, the C standard library provides the exact same thing. In a way that is pretty much guaranteed to be at least as fast if not faster, because the compiler implementation can replace it with pre-prepared assembly and doesn't have to look at your code and figure out "oh, he just wants a strrchr()".
But even then, any kind of C string manipulation is horrible for safety. If you at all have the option of using C++, you can write something like:
std::string output(filename, 0, filename.rfind('\\') + 1);// +1 is if you want to keep the backslash.
and it will *still* probably be about as fast as whatever you were going to write "the hard way".
But all of that efficiency concern *completely and utterly misguided* anyway, because it will take orders of magnitude more time for the OS to open the file than any of this string processing.