Рассмотрим следующие четыре случая:
#include <string>
int main()
{
std::string s("Hi I'm Da");
1. s += "n";
2. s += 'n';
3. s = s + "n";
4. s = s + 'n';
return 0;
}
Запуск этого тестового набора с вызовом:
g++ -std=c++11 -O3 -DVER=case -Wall -pedantic -pthread test.cpp -o test
с использованием g++ версии 4.8.3 20140624, я получаю следующие результаты:
2.16172ms
0.48296ms
510.202ms
510.455ms
Теперь я могу понять, что +=
быстрее, потому что вы не делаете копию с +
перед назначением, но почему случаи 1 и 2 показывают значительную разницу по сравнению с примерами 3 и 4? Также, как использование двойных кавычек или одиночных кавычек влияет на скорость конкатенации?