Esempio n. 1
0
bool decompress(Codec& codec)
{
	cout << "Decompressing with " << codec.getName() << " (multiple times)..." << endl;

	decompressedBuffer = new char[originalSize];

	Timer timer;

	const int repeatCount = 50;
	double decompressionTime = FLT_MAX;

	for (int i = 0; i < repeatCount; ++i)
	{
		timer.reset();
		bool ok = codec.decompress();
		double currentDecompressionTime = timer.query();

		if (!ok)
		{
			cout << "ERROR: Could not decompress" << endl;
			return false;
		}

		decompressionTime = min(decompressionTime, currentDecompressionTime);
	}

	double mbps = static_cast<double>(originalSize) / MEGABYTE / decompressionTime;
	cout << "Decompression speed: " << mbps << " MB/s" << endl;

	return true;
}
Esempio n. 2
0
bool compress(Codec& codec)
{
	cout << "Compressing with " << codec.getName() << "..." << endl;

	compressedBufferSize = codec.getMaxCompressedSize();
	compressedBuffer = new char[compressedBufferSize];

	Timer timer;
	bool ok = codec.compress();
	double compressionTime = timer.query();

	if (!ok)
	{
		cout << "ERROR: Could not compress" << endl;
		return false;
	}

	double mbps = static_cast<double>(originalSize) / MEGABYTE / compressionTime;
	double compressionRatio = static_cast<double>(compressedSize) / static_cast<double>(originalSize) * 100.0;
	cout << "Compressed in " << compressionTime << " s, " << mbps << " MB/s" << endl;
	cout << "Compressed size: " << static_cast<double>(compressedSize) / MEGABYTE << " MB (" << compressedSize / KILOBYTE << " KB)" << endl;
	cout << "Compression ratio: " << compressionRatio << "%" << endl;
	return true;
}