When I execute your code from MSVC2015 to i7, I notice:
, , fill() .
, fill() (, ), . , , , , .
:
, , , , , , , doug , (.. ).
, , , , , ( ):

:
void mytask(unsigned long long loops)
{
volatile double x;
for (unsigned long long i = 0; i < loops; i++) {
x = sin(sqrt(i) / i*3.14159);
}
}
void mytask2(vector<unsigned long long>& v, unsigned long long loops)
{
for (unsigned long long i = 0; i < loops; i++) {
v.push_back(i*3+10);
}
}