I want to ask a question about c++ i/o. If I use cin, cout with freopen(), is it necessary to put sync_with_stdio(false) or is there any way to speed it up? I noticed that using cout without sync_with_stdio(false) is a bit faster and it's no slower or faster than scanf().
Reading with sync_with_stdio(false) and cin takes around 3.7 seconds
Reading without sync_with_stdio(false) takes around 6 seconds
With scanf() takes 1.7 seconds
#include <bits/stdc++.h>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    freopen("i.inp", "r", stdin);
    freopen("o.out", "w", stdout);
    vector<int> a(10000000, 0);
    for (int i = 0; i < 10000000; i++) {
        cin >> a[i];
        //scanf("%d", &a[i]);
    }
    return 0;
}
Writing with sync_with_stdio(false) and cout takes 2.7 seconds
and without sync_with_stdio(false) takes 2.5 seconds while printf being the fastest
#include <bits/stdc++.h>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    freopen("i.inp", "r", stdin);
    freopen("o.out", "w", stdout);
    for (int i = 0; i < 10000000; i++) {
        cout << 1 << " ";
        //printf("%d", 1);
    }
    return 0;
}
While reading, sync_with_stdio(false) actually helps but writing with it takes longer which makes me a little confused and wondering if I should use it or not or just stick with scanf and printf.
I used codeblock for execution time measurement.
 
    