Files
gtav-src/tools_ng/script/coding/memory/compare_perf.py
T
2025-09-29 00:52:08 +02:00

109 lines
2.3 KiB
Python
Executable File

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' TODO
' Eric J Anderson
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
import os
import os.path
import sys
import re
# Classes
class Perf:
def __init__(self):
self.Clear()
def __str__(self):
return "{0}".format(self.name) + ", " + str(self.frame) + ", " + str(self.update)
def Clear(self):
self.name = 0
self.frame = 0
self.update = 0
def IsValid(self):
return self.frame > 0 and self.update > 0
def GetInput(pos):
if len(sys.argv) < 3:
print 'USAGE: python comapre_perf.py <source_folder> <target_folder>'
exit(-1)
return sys.argv[pos]
def GetSource():
return GetInput(1)
def GetTarget():
return GetInput(2)
def Read(folderPath):
filePaths = [ f for f in os.listdir(folderPath) if os.path.isfile(os.path.join(folderPath, f)) and f.endswith(".xml") ]
data = []
for filePath in filePaths:
perf = Perf();
perf.name = filePath
file = open(folderPath + "\\" + filePath, 'r')
while 1:
line = file.readline()
if not line:
break
if "msPerFrameResult" in line:
file.readline()
file.readline()
line = file.readline()
value = line[line.find("\"") + 1 : line.rfind("\"")]
perf.frame = float(value)
if "Update Thread" in line:
file.readline()
file.readline()
line = file.readline()
value = line[line.find("\"") + 1 : line.rfind("\"")]
perf.update = float(value)
if perf.IsValid():
data.append(perf)
break
file.close();
return data
def Compare(source, target):
print
def Main():
# SOURCE
sourcePath = GetInput(1);
print "SOURCE: " + sourcePath
sourceData = Read(sourcePath)
for data in sourceData:
print data
# TARGET
targetPath = GetInput(2);
print "\nTARGET: " + targetPath
targetData = Read(targetPath)
for data in targetData:
print data
# DELTA
print "\nDELTA"
i = 0
while i < len(sourceData):
name = frame = sourceData[i].name
frame = targetData[i].frame - sourceData[i].frame
update = targetData[i].update - sourceData[i].update
print('%(name)s, %(frame)+f, %(update)+f' % {'name' : name, 'frame': frame, 'update' : update})
i += 1
# Run
if __name__ == "__main__":
Main()