首页 > 代码库 > DMA性能测试

DMA性能测试

    本程序主要用来计算DMA数据读写过程中所花费的总得时间周期,依据公式T=tStart+ceil(L/4)+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]))
View Code

     但师兄说其实tStart也是一个常量,所以又将程序简化了以下:

技术分享
 1 #*************************************************************************
 2     # File Name: PerformanceTesting.py
 3     # Author: jiangjing
 4     # Mail: jjdl@mail.ustc.edu.cn 
 5     # Created Time: Sun 16 Jul 2017 06:12:22 AM PDT
 6 #************************************************************************
 7 import math
 8 
 9 tStart=2448
10 def GetTime(L,tTransform=11):
11     return tStart+math.ceil(L/4)+math.ceil(L/256)*tTransform*2
12 
13 def GetTotalTime(lList):
14     totalTime=0
15     for l in lList:
16         L=l[4]
17         totalTime+=GetTime(L)
18     return totalTime
View Code

    下面的这个test.py为测试样例:

技术分享
 1 #*************************************************************************
 2     # File Name: test.py
 3     # Author: jiangjing
 4     # Mail: jjdl@mail.ustc.edu.cn 
 5     # Created Time: Sun 16 Jul 2017 06:18:24 AM PDT
 6 #************************************************************************
 7 import PerformanceTesting as PT
 8 
 9 lList=[[0,0,0,0,65555],[0,0,0,0,672323]]
10 print(PT.GetTotalTime(lList))
View Code

DMA性能测试