Wpis z mikrobloga

w kwestii dydaktyki - fajny zamysł, ale jeśli ocenić sam algorytm to na pewno nie można zaliczyć go do wydajnych - złożoność na poziomie O(n^3) będzie się tragicznie skalować przy większych strukturach
@kernelpan1c: Serio n^3? Myślałem, że lepiej. 100MB binarki mieli mi w 30 sekund :D
W sumie to się zastanawiam, czy jest jakaś inna metoda zliczenia bajtów niż przelecenie pliku bajt po bajcie aż do napotkania dopasowania. Nie liczę metod opartych na prawdopodobieństwie typu: "jeśli pieć bajtów się powatarza, to szósty prawdodpodobnie też będzie tym samym.", albo ustalenie kolejności dopasowania według statystycznej częstotliwości występowania poszczególnych bajtów w pliku binarnym.
@VanQator: po pierwsze nie mieszaj angielskiego z polskim. Po drugie - chyba czegoś nie kumam. Jeżeli to miał być klasyczny histogram to zwykłe tab[buffer[y]]++; załatwia sprawę. Po co są te całe tańce z porównywaniem i zagnieżdżony for?

Dla jasności:

void histogram(const uint8_t* const p_data, const size_t data_len, uint8_t* const p_dest)
{
for(size_t i=0; i< data_len; i++) p_dest[p_data[i]]++;
}

to cała filozofia
@VanQator: wybacz, zbyt pobieżnie zerknąłem - raczej nie n^3, bardziej strzelałbym w n^2, choć i to zależy od stosunku bsize do blocks_number. trochę brakuje mi kontekstu, więc nie umiem dokładnie ocenić

jeśli chodzi o lepszy sposób to @keton22 zdaje się podsunął dobry pomysł :)
@VanQator: linijki 36-40 to dla mnie wielkie no-no-no, linijka 33 jest zbędna a i przemyślałbym co się stanie jak wielkość pliku nie będzie całkowitą wielokrotnością bsize ( ͡° ͜ʖ ͡°)