From 985db549d96e56de68657a6cdc3fecfd6875ce39 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Sun, 15 Sep 2019 15:38:41 +0200 Subject: [PATCH] Load dataset in smaller chunks --- src/tests/benchmark.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/tests/benchmark.cpp b/src/tests/benchmark.cpp index 678ca11..d4ef58e 100644 --- a/src/tests/benchmark.cpp +++ b/src/tests/benchmark.cpp @@ -232,12 +232,27 @@ int main(int argc, char** argv) { } char* dataset_memory = reinterpret_cast(randomx_get_dataset_memory(dataset)); - bool read_ok = false; + bool read_ok = true; FILE* fp = fopen("dataset.bin", "rb"); if (fp) { - read_ok = (fread(dataset_memory, 1, randomx::DatasetSize, fp) == randomx::DatasetSize); + constexpr size_t N = 1 << 24; + for (char* p = dataset_memory, *e = dataset_memory + randomx::DatasetSize; p < e;) + { + size_t nBytes = e - p; + if (nBytes > N) + nBytes = N; + + printf("Loading dataset: %.2f%% \r", (p - dataset_memory) * 100.0 / randomx::DatasetSize); + read_ok &= (fread(p, 1, nBytes, fp) == nBytes); + if (!read_ok) + { + printf("\nfread failed\n"); + break; + } + p += nBytes; + } fclose(fp); }