package com.github.lwhite1.tablesaw.store; import com.github.lwhite1.tablesaw.api.Table; import com.github.lwhite1.tablesaw.api.IntColumn; import com.github.lwhite1.tablesaw.testutil.DirectoryUtils; import com.github.lwhite1.tablesaw.testutil.NanoBench; import com.github.lwhite1.tablesaw.api.FloatColumn; import org.apache.commons.math3.random.RandomDataGenerator; import org.junit.Test; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; /** * */ public class SnappyCompressionBenchmark { @Test public void testFloat() { File TEST_FOLDER = Paths.get("testfolder").toFile(); Table t = Table.create("Test"); final FloatColumn c = new FloatColumn("fc"); t.addColumn(c); Path path = Paths.get("testfolder"); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } for (int i = 0; i < 1_000_000; i++) { c.add((float) Math.random()); } NanoBench nanoBench = NanoBench.create(); nanoBench.warmUps(5).measurements(20).cpuAndMemory().measure("Compression and file writing", () -> { try { StorageManager.writeColumn(TEST_FOLDER + File.separator + "foo", c); } catch (IOException e) { e.printStackTrace(); } }); System.out.println("Compressed size: " + DirectoryUtils.folderSize(TEST_FOLDER)); } @Test public void testInt() { File TEST_FOLDER = Paths.get("testfolder").toFile(); Table t = Table.create("Test"); final IntColumn c = new IntColumn("fc", 10_000_000); t.addColumn(c); RandomDataGenerator randomDataGenerator = new RandomDataGenerator(); for (int i = 0; i < 10_000_000; i++) { c.add(randomDataGenerator.nextInt(0, 1_000_000)); } Path path = Paths.get("testfolder"); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } NanoBench nanoBench = NanoBench.create(); nanoBench.warmUps(5).measurements(20).cpuAndMemory().measure("Compression", new Runnable() { @Override public void run() { try { StorageManager.writeColumn(TEST_FOLDER + File.separator + "foo", c); } catch (IOException e) { e.printStackTrace(); } } }); System.out.println("Compressed size: " + DirectoryUtils.folderSize(TEST_FOLDER)); } }