void SingleThreadedParallelizer::loop(ICallback& callback, int start, int end, int stride) {
            for(int i=start; i<end; i+=stride) {
                int jEnd = std::min(end, i + stride);

                for(int j=i; j<jEnd; ++j) {
                    callback.invoke(j);
                }
            }
        }
 void SingleThreadedParallelizer::loop(ICallback& callback, int start, int end) {
     for(int i=start; i<end; ++i) {
         callback.invoke(i);
     }
 }