test-sort: Add qsort test
This commit is contained in:
parent
5a6b43fc90
commit
fac742c038
|
@ -39,6 +39,29 @@ bool is_sorted(BAN::Vector<T>& vec)
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#define TEST_ALGORITHM_QSORT(ms) do { \
|
||||||
|
uint64_t duration_us = 0; \
|
||||||
|
printf("qsort\n"); \
|
||||||
|
for (size_t size = 100; duration_us < ms * 1000; size *= 10) { \
|
||||||
|
BAN::Vector<unsigned> data(size, 0); \
|
||||||
|
for (auto& val : data) \
|
||||||
|
val = rand() % 100; \
|
||||||
|
uint64_t start_ns = CURRENT_NS(); \
|
||||||
|
qsort(data.data(), data.size(), sizeof(unsigned), [](const void* a, const void* b) -> int { return *(unsigned*)a - *(unsigned*)b; }); \
|
||||||
|
uint64_t stop_ns = CURRENT_NS(); \
|
||||||
|
if (!is_sorted(data)) { \
|
||||||
|
printf(" \e[31mFAILED!\e[m\n"); \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
duration_us = (stop_ns - start_ns) / 1'000; \
|
||||||
|
printf(" %5d.%03d ms (%zu)\n", \
|
||||||
|
(int)(duration_us / 1000), \
|
||||||
|
(int)(duration_us % 1000), \
|
||||||
|
size \
|
||||||
|
); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
|
@ -49,4 +72,5 @@ int main()
|
||||||
TEST_ALGORITHM(100, BAN::sort::intro_sort);
|
TEST_ALGORITHM(100, BAN::sort::intro_sort);
|
||||||
TEST_ALGORITHM(1000, BAN::sort::sort);
|
TEST_ALGORITHM(1000, BAN::sort::sort);
|
||||||
TEST_ALGORITHM(1000, BAN::sort::radix_sort);
|
TEST_ALGORITHM(1000, BAN::sort::radix_sort);
|
||||||
|
TEST_ALGORITHM_QSORT(100);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue