#!/usr/bin/env julia import CSV using Formatting function parse_csv(filename) println("Starting parsing") data = CSV.read(filename, header=0) println("Parsing done") plaintexts::Matrix{UInt8} = convert(Matrix{UInt8}, data[:, 1:16]) timings::Matrix{UInt32} = convert(Matrix{UInt32}, data[:, 17:17]) write_data("plaintexts.dat", plaintexts) write_data("timings.dat", timings) end function write_data(destination, data) open(destination, "w") do file field_size::UInt8 = sizeof(eltype(data)) rows::UInt64 = size(data, 1) cols::UInt64 = size(data, 2) write(file, field_size); write(file, rows) write(file, cols) write(file, data) end end function load_file(filename, type::Type{T})::Matrix{T} where T open(filename, "r") do file field_size = read(file, UInt8) if field_size != sizeof(T) throw(ArgumentError(format("Expected type of size {:d} but passed type '{}' has size {:d}", field_size, T, sizeof(T)))) end rows = read(file, UInt64) cols = read(file, UInt64) data = Matrix{T}(undef, rows, cols) read!(file, data) return data end end @time parse_csv("timing.csv")