1
0
mirror of https://github.com/facebook/zstd.git synced 2025-07-30 22:23:13 +03:00

[pzstd] Smart default # of threads (#331)

This commit is contained in:
Nick Terrell
2016-09-06 12:40:59 -07:00
parent 9622fe499d
commit 4c202815c7
2 changed files with 11 additions and 4 deletions

View File

@ -10,6 +10,7 @@
#include <cstdio>
#include <cstring>
#include <thread>
namespace pzstd {
@ -103,6 +104,7 @@ bool Options::parse(int argc, const char** argv) {
numThreads = parseUnsigned(argv[i]);
if (numThreads == 0) {
std::fprintf(stderr, "Invalid argument: # of threads must be > 0.\n");
return false;
}
break;
case 'p':
@ -169,13 +171,18 @@ bool Options::parse(int argc, const char** argv) {
if (compressionLevel > maxCLevel) {
std::fprintf(
stderr, "Invalid compression level %u.\n", compressionLevel);
return false;
}
}
// Check that numThreads is set
if (numThreads == 0) {
std::fprintf(stderr, "Invalid arguments: # of threads not specified.\n");
numThreads = std::thread::hardware_concurrency();
if (numThreads == 0) {
std::fprintf(stderr, "Invalid arguments: # of threads not specified "
"and unable to determine hardware concurrency.\n");
return false;
}
}
return true;
}
}

View File

@ -118,11 +118,11 @@ TEST(Options, ValidInputs) {
}
}
TEST(Options, BadNumThreads) {
TEST(Options, NumThreads) {
{
Options options;
std::array<const char*, 3> args = {{nullptr, "-o", "-"}};
EXPECT_FALSE(options.parse(args.size(), args.data()));
EXPECT_TRUE(options.parse(args.size(), args.data()));
}
{
Options options;