• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak napisać i zmierzyć kod w Quick C++ Benchmark?

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 25 marca 2022 w C i C++ przez osobliwy nick Użytkownik (900 p.)

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";?

2 odpowiedzi

0 głosów
odpowiedź 26 marca 2022 przez adrian17 Ekspert (344,860 p.)

Nie można po prostu przekleić kodu.

Można, ale nie bez myślenia.

Widać po kodzie na stronie że używają frameworka Google Benchmark, więc proponuję poczytać ich oficjalne instrukcje:

https://github.com/google/benchmark#usage

https://github.com/google/benchmark/blob/main/docs/user_guide.md

0 głosów
odpowiedź 1 kwietnia 2022 przez osobliwy nick Użytkownik (900 p.)
Napisałem to tak:

https://quick-bench.com/q/--5R-rpUCT6oxLefErA_RnA3FIw

Ale dzieje się coś dziwnego. Kod bez włączonych flag jest szybszy, niż z flagami. Jak to możliwe?

Badam to w Clangu 9 i 10, bo z tymi kompilatorami wydaje się najszybszy.

Podobne pytania

0 głosów
0 odpowiedzi 262 wizyt
pytanie zadane 11 listopada 2020 w Python przez Ignpie Nowicjusz (120 p.)
0 głosów
3 odpowiedzi 240 wizyt
pytanie zadane 28 marca 2018 w PHP przez Bartess Gaduła (3,630 p.)
0 głosów
0 odpowiedzi 117 wizyt
pytanie zadane 18 lipca 2017 w C# przez Paweł Romanoski Początkujący (320 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...