Remove old benchmark code
This commit is contained in:
parent
f381d2d39c
commit
4c3b1881f2
@ -1,146 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2016-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
#include "ErrorHolder.h"
|
||||
#include "Options.h"
|
||||
#include "Pzstd.h"
|
||||
#include "utils/FileSystem.h"
|
||||
#include "utils/Range.h"
|
||||
#include "utils/ScopeGuard.h"
|
||||
#include "utils/ThreadPool.h"
|
||||
#include "utils/WorkQueue.h"
|
||||
|
||||
#include <chrono>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
|
||||
using namespace pzstd;
|
||||
|
||||
namespace {
|
||||
// Prints how many ns it was in scope for upon destruction
|
||||
// Used for rough estimates of how long things took
|
||||
struct BenchmarkTimer {
|
||||
using Clock = std::chrono::system_clock;
|
||||
Clock::time_point start;
|
||||
FILE* fd;
|
||||
|
||||
explicit BenchmarkTimer(FILE* fd = stdout) : fd(fd) {
|
||||
start = Clock::now();
|
||||
}
|
||||
|
||||
~BenchmarkTimer() {
|
||||
auto end = Clock::now();
|
||||
size_t ticks =
|
||||
std::chrono::duration_cast<std::chrono::milliseconds>(end - start)
|
||||
.count();
|
||||
ticks = std::max(ticks, size_t{1});
|
||||
for (auto tmp = ticks; tmp < 100000; tmp *= 10) {
|
||||
std::fprintf(fd, " ");
|
||||
}
|
||||
std::fprintf(fd, "%zu | ", ticks);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Code I used for benchmarking
|
||||
|
||||
void testMain(const Options& options) {
|
||||
if (!options.decompress) {
|
||||
if (options.compressionLevel < 10) {
|
||||
std::printf("0");
|
||||
}
|
||||
std::printf("%u | ", options.compressionLevel);
|
||||
} else {
|
||||
std::printf(" d | ");
|
||||
}
|
||||
if (options.numThreads < 10) {
|
||||
std::printf("0");
|
||||
}
|
||||
std::printf("%u | ", options.numThreads);
|
||||
|
||||
FILE* inputFd = std::fopen(options.inputFile.c_str(), "rb");
|
||||
if (inputFd == nullptr) {
|
||||
std::abort();
|
||||
}
|
||||
size_t inputSize = 0;
|
||||
if (inputFd != stdin) {
|
||||
std::error_code ec;
|
||||
inputSize = file_size(options.inputFile, ec);
|
||||
if (ec) {
|
||||
inputSize = 0;
|
||||
}
|
||||
}
|
||||
FILE* outputFd = std::fopen(options.outputFile.c_str(), "wb");
|
||||
if (outputFd == nullptr) {
|
||||
std::abort();
|
||||
}
|
||||
auto guard = makeScopeGuard([&] {
|
||||
std::fclose(inputFd);
|
||||
std::fclose(outputFd);
|
||||
});
|
||||
|
||||
WorkQueue<std::shared_ptr<BufferWorkQueue>> outs;
|
||||
ErrorHolder errorHolder;
|
||||
size_t bytesWritten;
|
||||
{
|
||||
ThreadPool executor(options.numThreads);
|
||||
BenchmarkTimer timeIncludingClose;
|
||||
if (!options.decompress) {
|
||||
executor.add(
|
||||
[&errorHolder, &outs, &executor, inputFd, inputSize, &options] {
|
||||
asyncCompressChunks(
|
||||
errorHolder,
|
||||
outs,
|
||||
executor,
|
||||
inputFd,
|
||||
inputSize,
|
||||
options.numThreads,
|
||||
options.determineParameters());
|
||||
});
|
||||
bytesWritten = writeFile(errorHolder, outs, outputFd, true);
|
||||
} else {
|
||||
executor.add([&errorHolder, &outs, &executor, inputFd] {
|
||||
asyncDecompressFrames(errorHolder, outs, executor, inputFd);
|
||||
});
|
||||
bytesWritten = writeFile(
|
||||
errorHolder, outs, outputFd, /* writeSkippableFrames */ false);
|
||||
}
|
||||
}
|
||||
if (errorHolder.hasError()) {
|
||||
std::fprintf(stderr, "Error: %s.\n", errorHolder.getError().c_str());
|
||||
std::abort();
|
||||
}
|
||||
std::printf("%zu\n", bytesWritten);
|
||||
}
|
||||
|
||||
int main(int argc, const char** argv) {
|
||||
if (argc < 3) {
|
||||
return 1;
|
||||
}
|
||||
Options options(0, 23, 0, false, "", "", true, true);
|
||||
// Benchmarking code
|
||||
for (size_t i = 0; i < 2; ++i) {
|
||||
for (size_t compressionLevel = 1; compressionLevel <= 16;
|
||||
compressionLevel <<= 1) {
|
||||
for (size_t numThreads = 1; numThreads <= 16; numThreads <<= 1) {
|
||||
options.numThreads = numThreads;
|
||||
options.compressionLevel = compressionLevel;
|
||||
options.decompress = false;
|
||||
options.inputFile = argv[1];
|
||||
options.outputFile = argv[2];
|
||||
testMain(options);
|
||||
options.decompress = true;
|
||||
options.inputFile = argv[2];
|
||||
options.outputFile = std::string(argv[1]) + ".d";
|
||||
testMain(options);
|
||||
std::fflush(stdout);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user