Usar std :: ios :: sync_with_stdio (false) puede ser más rápido que scanf e printf?

Solo sé que usar cin y cout será más lento que scanf e printf. Sin embargo,la respuesta superior dice que usar std :: ios :: sync_with_stdio (false) puede ser más rápido que scanf & printf. Sin embargo, hice este experimento y descubrí que no estaba bien. ¿Es mi culpa? ¿Por qué?

¿Cuál es un código correcto para usar cin & cout más rápido que scanf & printf, incluida la lectura de archivos? Gracias.

Aquí está mi código:

Generando datos

#include<cstdio>
#include<iostream>
#include<ctime>
#include<fstream>
#include<iomanip>
FILE *data = freopen("test.in","w",stdin);
//FILE *fi = freopen("test.in","r",stdin);
//FILE *fo = freopen("test.out","w",stdout);
int main()
{
    for(int i=1;i<10000000;i++)
        printf("%d\n",i);
    return 0;
}

Usando scanf y printf

#include<cstdio>
#include<iostream>
#include<ctime>
#include<fstream>
#include<iomanip>
//FILE *data = freopen("test.in","w",stdin);
FILE *fi = freopen("test.in","r",stdin);
FILE *fo = freopen("test.out","w",stdout);
int main()
{
    int ans = 1;
    while(~scanf("%d",&ans))
    {
        printf("%d\n",ans);
    }
    return 0;
}

Uso de cin & cout (std :: ios :: sync_with_stdio (true))

#include<cstdio>
#include<iostream>
#include<ctime>
#include<fstream>
#include<iomanip>
//FILE *data = freopen("test.in","w",stdin);
FILE *fi = freopen("test.in","r",stdin);
FILE *fo = freopen("test.out","w",stdout);
int main()
{
    std::ios::sync_with_stdio(true);
    int ans = 1;
    while(std::cin>>ans)
    {
        std::cout<<ans<<std::endl;
    }
    return 0;
}

Usando std :: ios :: sync_with_stdio (falso)

#include<cstdio>
#include<iostream>
#include<ctime>
#include<fstream>
#include<iomanip>
//FILE *data = freopen("test.in","w",stdin);
FILE *fi = freopen("test.in","r",stdin);
FILE *fo = freopen("test.out","w",stdout);
int main()
{
    std::ios::sync_with_stdio(false);
    int ans = 1;
    while(std::cin>>ans)
    {
        std::cout<<ans<<std::endl;
    }
    return 0;
}

Resultado:

scanf version:                           4.918 seconds
iostream version:                        51.266 seconds
iostream with sync_with_stdio(false):    31.815 seconds

Respuestas a la pregunta(1)

Su respuesta a la pregunta