c++ is it worth preprocessor optimization for for loops while i < 1 I'm writing some code to take high precision timings of a function call

for (int i = 0; i &lt; iterations; i++) {
    beginTime = high_resolution_clock::now();

    CallFunc(functionPtr, otherParamaters ...); // inline function call to do the timed function

    endTime = high_resolution_clock::now();
    elapsedTime = duration_cast&lt;duration&lt;double&gt;&gt;(endTime - beginTime);
    timings.push_back(elapsedTime.count());
}


However some of the functions I'm timing run so fast the clock can't pick them up, it ends up just writing a load of 0s
I Had the idea to do several repetitions of the function call per timing, to try to get a numerical time I could then divide down past the resolution of the clock, but I don't want to penalize the accuracy of the timing for functions that don't need these repetitions
My solution was to use preprocessor #ifs

for (int i = 0; i &lt; iterations; i++) {
    beginTime = high_resolution_clock::now();

#if repetitions &gt; 1
    for (int i = 0; i &lt; repetitions; i++) {
#endif 
        CallFunc(functionPtr, otherParamaters ...); // inline function call to do the timed function
#if repetitions &gt; 1
    }
#endif    
    endTime = high_resolution_clock::now();
    elapsedTime = duration_cast&lt;duration&lt;double&gt;&gt;(endTime - beginTime);
    timings.push_back(elapsedTime.count());
}


My question is, is this kind of optimization silly? Is the compiler likely to do this for me anyway?
EDIT: repetitions is a const int
Notational suggestion: if insisting on a bracketed controlled statement, favour
#if 0 &lt; repetitions
# if 1 &lt; repetitions
    for (int i = 0; i &lt; repetitions; i++)
# endif
    {
        CallFunc(functionPtr, otherParamaters …); // inline call to timed function
    }
#endif