C ++ 11 регулярное выражение медленнее, чем Python

Привет я хотел бы понять, почему следующий код, который делает разделение строки с использованием регулярных выражений

#include
#include
#include

std::vector split(const std::string &s){
    static const std::regex rsplit(" +");
    auto rit = std::sregex_token_iterator(s.begin(), s.end(), rsplit, -1);
    auto rend = std::sregex_token_iterator();
    auto res = std::vector(rit, rend);
    return res;
}

int main(){
    for(auto i=0; i< 10000; ++i)
       split("a b c", " ");
    return 0;
}

медленнее, чем следующий код Python

import re
for i in range(10000):
    re.split(' +', 'a b c')

вот

> python test.py  0.05s user 0.01s system 94% cpu 0.070 total
./test  0.26s user 0.00s system 99% cpu 0.296 total

Я использую Clang ++ на OSX.

компиляция с -O3 приводит к0.09s user 0.00s system 99% cpu 0.109 total

Ответы на вопрос(4)

Ваш ответ на вопрос