应用启动速度测试脚本

# -*- coding: utf-8 -*-
import subprocess
import time
import re
import sys

package_name = 'com.nfdaily.nfplus'
launch_activity = '.ui.activity.SplashActivity'

#执行命令函数
def excuteCommand(com):
    ex = subprocess.Popen(com, stdout=subprocess.PIPE, shell=True)
    out, err  = ex.communicate()
    status = ex.wait()
    return out.decode()

# 退出app
def app_stop(package_name):
    cmd_stop = "adb shell am force-stop %s" % (package_name)
    excuteCommand(cmd_stop)
    time.sleep(5)

#获取冷启动时间
def get_cold_boot_time(package_name, launch_activity):
    adb_command = 'adb shell "am start -W %s | grep Time"' % (package_name + "/" + launch_activity)
    adb_output = excuteCommand(adb_command)
    print(adb_output)
    match_obj = re.match( r'ThisTime:(.*)', adb_output, re.M|re.I)
    str_time = ''
    if match_obj:
        str_time = match_obj.group(1)
    else:
        match_obj = re.match( r'TotalTime:(.*)', adb_output, re.M|re.I)
        if match_obj:
            str_time = match_obj.group(1)
        else:
            return -1
    return int(str_time.strip())

# 执行测试,times为次数,结果取平均值
def run_test(times):
    cold_time = []
    for i in range(times):
        start_time = get_cold_boot_time(package_name, launch_activity)
        if start_time <= 0:
            print("start time invalid = " + str(start_time) + ' ms')
            continue
        cold_time.append(start_time)
        time.sleep(5)
        app_stop(package_name)
    res_cold_time = 0
    print("cold_time = " + str(cold_time))
    for i in cold_time:
        res_cold_time = res_cold_time + i
    print('average cold_time: ' + str(res_cold_time / times) + ' ms')


if __name__ == '__main__':
    run_time = 10
    if len(sys.argv) > 1:
        run_time = sys.argv[1]
    run_test(int(run_time))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。