Wenn es darum geht, "
std::string"s zu vergleichen, wird das kaum einen Unterschied machen. "
strcmp" wäre praktisch möglicherweise leicht langsamer, weil die Länge des Strings nicht bekannt ist was potentiell weniger Optimierungen ermöglich. Die STL des MSVC verwendet intern scheinbar "
memcmp" zum Vergleich. Dafür bestimmt er erst die Stringlänge. Wenn der Compiler die Stringlänge nicht statisch bestimmt, könnte es zur Laufzeit einen kleinen Performanceverlust beim Vergleichen langer Strings mit "
std::string" und "
char*" geben. Ein explizite Angabe von "memcmp" mit statischer Länge könnte damit schneller sein.(Müsste man untersuchen). In komplexeren Situationen in denen der Compiler die Länge mit hoher Wahrscheinlichkeit nicht statisch auflöst, wäre das Vergleichen von "
std::string"s mit langen "
char*" somit potentiell uneffizient.
Wenn sich "
std::string" selbst irgendwie vermeiden lässt, wäre das aber der viel viel größere Sprung. Intern besteht "
std::string" nämlich aus einigen Overhead vorallendingend bestehend aus dynamischen Allokationen und der Small String "Optimization". Wenn man sehr viel mit Strings hantiert wird das spürbar sein. Der Längenvergleich selbst wohl eher weniger.
Wenn du den Vergleich selbst wirklich schneller machen wollen würdest, wäre eher soetwas wie das interessent:
http://www.agner.org/optimize/#asmlib
Wenn man den Vergleichen im Manual Glauben schenken darf, ist seine Implementierung schneller. Möglicherweise haben sich inzwischen aber auch die Libs der Compiler weiterentwickelt.