Sí sí, es que quería mantener una atmósfera de misterio...
Las pruebas las hice con:
Y ejecutando la misma prueba para cada una de las tres funciones, en Visual Studio, ha resultado:
Curioso, al menos a mí me lo parece.
Pero lo mismo con Mingw (g++ -O3 -Wall -pedantic)
resulta:
Jé, nuevo desafío... ¿quién me lo explica?
Las pruebas las hice con:
Código (cpp) [Seleccionar]
size_t n_pares(const std::vector<int>& v, int k)
{
auto n{ 0 };
auto it{ v.begin() };
for (auto i = v.begin(), j = v.end();
i < j;
++i) // avanza la cola
{
while (it != j && *it < *i + k) { // avanza la cabeza
++it;
};
if (it == j) { // no tanto que se caiga
break;
}
else if (*it == *i + k) { // se ha formado una pareja
++n;
}
}
return n;
}
Y ejecutando la misma prueba para cada una de las tres funciones, en Visual Studio, ha resultado:
CitarVisual Studio:
-------------
Elementos al azar (uniform distribution) desde 1 hasta 2147483647
k == 25
Vector size == 99998
n_pares():
hallados == 7
demora: 0.0002385 seg
k_paired():
hallados == 7
demora: 0.0003567 seg (49.5597 %)
k_zoz():
hallados == 7
demora: 0.0005064 seg (112.327 %)
Vector size == 999767
n_pares():
hallados == 462
demora: 0.002672 seg
k_paired():
hallados == 462
demora: 0.0038684 seg (44.7754 %)
k_zoz():
hallados == 462
demora: 0.005371 seg (101.01 %)
Vector size == 9974491
n_pares():
hallados == 46567
demora: 0.0346364 seg
k_paired():
hallados == 46567
demora: 0.0532758 seg (53.8145 %)
k_zoz():
hallados == 46567
demora: 0.0667464 seg (92.7059 %)
Vector size == 97464998
n_pares():
hallados == 4419710
demora: 0.796983 seg
k_paired():
hallados == 4419710
demora: 0.922205 seg (15.712 %)
k_zoz():
hallados == 4419710
demora: 1.12035 seg (40.5734 %)
Vector size == 783463366
n_pares():
hallados == 285828837
demora: 6.97443 seg
k_paired():
hallados == 285828837
demora: 8.55857 seg (22.7136 %)
k_zoz():
hallados == 285828837
demora: 9.50019 seg (36.2146 %)
Curioso, al menos a mí me lo parece.
Pero lo mismo con Mingw (g++ -O3 -Wall -pedantic)
resulta:
CitarElementos al azar (uniform distribution) desde 1 hasta 2147483647
k == 25
Vector size == 99997
n_pares():
hallados == 5
demora: 0.000945 seg
k_paired():
hallados == 5
demora: 0 seg (-100 %)
k_zoz():
hallados == 5
demora: 0 seg (-100 %)
Vector size == 999744
n_pares():
hallados == 456
demora: 0.002965 seg
k_paired():
hallados == 456
demora: 0.003038 seg (2.46206 %)
k_zoz():
hallados == 456
demora: 0.003999 seg (34.8735 %)
Vector size == 9974357
n_pares():
hallados == 46171
demora: 0.046053 seg
k_paired():
hallados == 46171
demora: 0.033003 seg (-28.3369 %)
k_zoz():
hallados == 46171
demora: 0.048001 seg (4.22991 %)
Vector size == 97462426
n_pares():
hallados == 4422382
demora: 0.875945 seg
k_paired():
hallados == 4422382
demora: 0.785002 seg (-10.3823 %)
k_zoz():
hallados == 4422382
demora: 0.966 seg (10.2809 %)
Vector size == 783434184
n_pares():
hallados == 285793753
demora: 7.66395 seg
k_paired():
hallados == 285793753
demora: 7.158 seg (-6.60165 %)
k_zoz():
hallados == 285793753
demora: 8.702 seg (13.5446 %)
Jé, nuevo desafío... ¿quién me lo explica?