/
Program.cs
53 lines (43 loc) · 2.02 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using CompressionApplication.DataCompressors;
using CompressionApplication.DataGenerators;
namespace CompressionApplication
{
class Program
{
static void Main()
{
var randomGenerator = new RandomDataGenerator();
var randomRunner = new CompressionRunner(randomGenerator, new CopyDataCompressor());
Console.WriteLine("Copying \"Compressor\":");
RunWithRunner(randomRunner);
var simpleRunner = new CompressionRunner(randomGenerator, new SimpleDataCompressor());
Console.WriteLine("Simple (non)Compressor:");
RunWithRunner(simpleRunner);
var lessSimpleRunner = new CompressionRunner(randomGenerator, new LessSimpleDataCompressor());
Console.WriteLine("LessSimple Compressor with randomness:");
RunWithRunner(lessSimpleRunner);
var lessSimpleRunnerWithMaxDuplication = new CompressionRunner(new AllOnesGenerator(), new LessSimpleDataCompressor());
Console.WriteLine("LessSimple Compressor maximum duplication:");
RunWithRunner(lessSimpleRunnerWithMaxDuplication);
var lessSimpleRunnerWithDuplication = new CompressionRunner(new SixteenDataGenerator(), new LessSimpleDataCompressor());
Console.WriteLine("LessSimple Compressor some duplication:");
RunWithRunner(lessSimpleRunnerWithDuplication);
Console.ReadLine();
}
static void RunWithRunner(CompressionRunner runner)
{
var sizes = new uint[] {1, 10, 100, 1000, 10000, 100000, 1000000};
foreach (var size in sizes)
{
var compressionRatio = runner.Run(size);
PrintResult(compressionRatio, size);
}
Console.WriteLine();
}
static void PrintResult(double compressionRatio, uint size)
{
Console.WriteLine("Compression Ratio (" + size + " uncompressed bytes): {0:0.00}%", (compressionRatio * 100));
}
}
}