本程序主要用来计算DMA数据读写过程中所花费的总得时间周期,依据公式T=tStart+ceil(L/4)*2+ceil(L/256)*tTransform*2
因为tTransform是一个常量(通常默认为11),因此只需根据debug文件分析出tStart即可。
一开始我以为tStart是一个变量,是buffer2-2(读)的开始时刻与准备时刻最后一个buffer2-17(写)的差值,因此写了
以下程序:
1 #************************************************************************* 2 3 # File Name: performance_testing.py 4 # Author: jiangjing 5 # Mail: jjdl@mail.ustc.edu.cn 6 # Created Time: Sat 15 Jul 2017 09:34:04 PM PDT 7 #************************************************************************\ 8 import math 9 import sys 10 11 def GetFirstBuffer2_2(path): 12 fDebug=open(path).read() 13 index2_2=fDebug.index("[buffer2-2]") 14 index_space=fDebug.index(" ",index2_2+17) 15 return [index2_2,fDebug[index2_2+17:index_space]] 16 17 def GetLastBuffer2_17(path,index2_2): 18 fDebug=open(path).read() 19 index2_17=fDebug.rindex("[buffer2-17]",0,index2_2) 20 index_space=fDebug.index(" ",index2_17+18) 21 return [index2_17,fDebug[index2_17+18:index_space]] 22 23 def GetTotalTime(L,path,tTransform=11): #the 'path' is the paht of debug file 24 buffer2_2=GetFirstBuffer2_2(path) 25 buffer2_17=GetLastBuffer2_17(path,buffer2_2[0]) 26 return int(buffer2_2[1])-int(buffer2_17[1])+math.ceil(L/4)+math.ceil(L/256)*tTransform*2 27 28 #the code just for debug,you can comment the following code 29 if __name__=='__main__': 30 if(len(sys.argv)>1): 31 print(GetTotalTime(int(sys.argv[1]),sys.argv[2]))