Files
asarium b9413a2639 Improve handling of environment redrawing
This should make sure that the environment map is only redrawn if
necessary. In my case that should improve frame times by around 1ms for
the normal case when the environment map doesn't need to be redrawn.
2017-03-22 17:01:28 +01:00

88 lines
2.1 KiB
Python

#!/usr/bin/env python3
import numpy as np
import pylab as plot
import sys
import argparse
parser = argparse.ArgumentParser(description="Generate a performance graph")
parser.add_argument("--base_data", required=True,
help="The path to the base data")
parser.add_argument("--base_title", required=True,
help="The title of the base data plot")
parser.add_argument("--changed_data", required=True,
help="The path to the changed data")
parser.add_argument("--changed_title", required=True,
help="The title of the changed data plot")
parser.add_argument("--fps", action="store_true",
help="Draw plot as FPS, default is frametime")
parser.add_argument("--save_img", help="Saves the generated graph to the specified file path.")
args = parser.parse_args()
averageTime = 0.3
NANOSECONDS_PER_SECOND = 1000000000.
def average(time, frametime):
startIndex = 0
currentTime = time[startIndex]
outTime = []
outFPS = []
for i in range(startIndex + 1, len(time)):
if time[i] - currentTime >= averageTime:
val = np.mean(frametime[startIndex:i])
outTime.append(time[startIndex])
outFPS.append(val)
startIndex = i
currentTime = time[i]
return outTime, outFPS
def adjustData(data):
times = data[2:, 0] / NANOSECONDS_PER_SECOND
frametimes = data[2:, 1] / NANOSECONDS_PER_SECOND
times = times - times[0]
if args.fps:
frametimes = 1 / frametimes
return average(times, frametimes)
normalData = np.genfromtxt(args.base_data, delimiter=';')
changedData = np.genfromtxt(args.changed_data, delimiter=';')
nT, nF = adjustData(normalData)
cT, cF = adjustData(changedData)
avgNormalData = np.mean(nF)
avgChangedData = np.mean(cF)
ratio = avgNormalData / avgChangedData
print(ratio)
plot.plot(nT, nF, label=args.base_title)
plot.plot(cT, cF, label=args.changed_title)
plot.xlabel("Mission time")
if args.fps:
plot.ylabel("FPS")
else:
plot.ylabel("Frametime")
plot.legend(loc=1)
if args.save_img:
plot.savefig(args.save_img)
else:
plot.show()