Maneira mais eficiente de atribuir valores a mapas

Qual a maneira de atribuir valores a um mapa é mais eficiente? Ou são todos otimizados para o mesmo código (na maioria dos compiladores modernos)?

   // 1) Assignment using array index notation
   Foo["Bar"] = 12345;

   // 2) Assignment using member function insert() and STL pair
   Foo.insert(std::pair<string,int>("Bar", 12345));

   // 3) Assignment using member function insert() and "value_type()"
   Foo.insert(map<string,int>::value_type("Bar", 12345));

   // 4) Assignment using member function insert() and "make_pair()"
   Foo.insert(std::make_pair("Bar", 12345));

(Eu sei que eu poderia comparar e verificar a saída do compilador, mas essa questão surgiu agora e a única coisa que tenho à mão é o meu celular ... hehe)

questionAnswers(6)

yourAnswerToTheQuestion