Potrzebuję zmierzyć prędkości kilku generatorów PRNG. Podobno nadaje się do tego:
https://quick-bench.com
Generatory:
#include <iostream>
uint64_t LCG(uint64_t LCG_state)
{
LCG_state = (LCG_state * 2862933555777941757 + 1422359891750319841);
return LCG_state;
}
int main()
{
uint64_t LCG_state = 333;
uint32_t result;
for(int i=0; i<640000000; i++)
{
LCG_state = LCG(LCG_state);
result = LCG_state >> 32;
}
}
#include <iostream>
static inline uint64_t rotl(const uint64_t x, int k) {
return (x << k) | (x >> (64 - k));
}
static uint64_t s[2] = {9,5};
uint64_t next(void) {
const uint64_t s0 = s[0];
uint64_t s1 = s[1];
const uint64_t result = s0 + s1;
s1 ^= s0;
s[0] = rotl(s0, 24) ^ s1 ^ (s1 << 16); // a, b
s[1] = rotl(s1, 37); // c
return result;
}
int main()
{
uint64_t result;
for(int i=0; i<320000000; i++)
{
result = next();
}
}
Jak to zmierzyć za pomocą tej strony? A konkretnie jak ma wyglądać kod, który będzie w stanie zmierzyć ta strona. Nie można po prostu przekleić kodu. Najczęściej cokolwiek nie próbuję tam wstawić dostaję error: function definition is not allowed here. Cały kod opiera się na wywoływaniu pewnej funkcji, więc, jeśli definiowanie funkcji nie jest tam dozwolone, to co i jak mam tam zmierzyć? Nie znam sposobu iteracyjnego wywoływania funkcji bez zdefiniowania funkcji.
A może za pomocą tego narzędzia można mierzyć tylko równie krótkie i trywialne kawałki kodu jak w przykładzie: std::string x = "hello";?