mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-07 08:15:59 -10:00
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.
88 lines
2.1 KiB
Python
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()
|