import sys import math from matplotlib import pyplot as plt with open(sys.argv[1]) as f: lines = f.readlines() results = {"f32": {"scalar": {}, "neon": {}}, "f64": {"scalar": {}, "neon": {}}} for line in lines: if line.startswith("test ") and not line.startswith("test result"): name, result = line.split("... bench:") name = name.split()[1] _, length, ftype, algo = name.split("_") value = float(result.strip().split(" ")[0].replace(",", "")) results[ftype][algo][float(length)] = value lengths = sorted(list(results["f32"]["scalar"].keys())) scalar_32 = [] neon_32 = [] for l in lengths: sc32 = results["f32"]["scalar"][l] nn32 = results["f32"]["neon"][l] scalar_32.append(100.0) neon_32.append(100.0 * sc32/nn32) scalar_64 = [] neon_64 = [] for l in lengths: sc64 = results["f64"]["scalar"][l] nn64 = results["f64"]["neon"][l] scalar_64.append(100.0) neon_64.append(100.0 * sc64/nn64) lengths = [math.log(l, 2) for l in lengths] plt.figure() plt.plot(lengths, scalar_64, lengths, neon_64) plt.title("f64") plt.ylabel("relative speed, %") plt.xlabel("log2(length)") plt.xticks(list(range(4,23))) plt.grid() plt.legend(["scalar", "neon"]) plt.figure() plt.plot(lengths, scalar_32, lengths, neon_32) plt.title("f32") plt.ylabel("relative speed, %") plt.xlabel("log2(length)") plt.legend(["scalar", "neon"]) plt.xticks(list(range(4,23))) plt.grid() plt.show()