精华内容
下载资源
问答
  • 代码运行开始和运行结束
    千次阅读
    2022-04-22 10:24:49

    第一种方法:

    import datetime
    
    aa=datetime.datetime.now()#开始时间点
    
    m=0
    for i in range(1000):
       m=m+i
    
    bb=datetime.datetime.now()#结束时间点
    
    cc=bb-aa#运行时间,单位是  时:分:秒
    print('运行时间是:',cc)
    

    第二种方法:

    import time
    
    aa=time.time()#开始时间
    
    m=0
    for i in range(1000):
       m=m+i
    
    bb=time.time()#结束时间
    
    cc=bb-aa#运行时间  单位是秒
    print(cc)

    第三种方法:

    import time
    
    aa=time.clock()#开始时间
    
    m=0
    for i in range(1000):
       m=m+i
    
    bb=time.clock()#结束时间
    
    cc=bb-aa#运行时间  单位是秒
    print(cc)
    import time
    
    time.sleep(t) #可以使程序暂停t秒

    更多相关内容
  • 单片机测量代码运行时间方法-STM32

    千次阅读 多人点赞 2022-03-31 17:15:29
    在实际程序的编写中,我们经常会对...我们可以使用J-LINK或者ST-link 等仿真器,实现对代码运行时间的测量,首先要设置仿真器仿真的实际频率 首先点击Settings设置 然后点击Trace 设置我们芯片的系统频率,点击Teac

    在实际程序的编写中,我们经常会对程序进行一个整体的复盘、优化,或者对算法的运行时间进行测量等等,那么怎么精确的测量我们程序的运行时间呢?

    下面我们给出几种方法:

    • 1 使用Keil Debug功能
    • 2 使用逻辑分析仪或示波器等设备测量
    • 3 使用STM32自带定时器进行测量

    1 使用Keil Debug功能

    我们可以使用J-LINK或者ST-link 等仿真器,实现对代码运行时间的测量,首先要设置仿真器仿真的实际频率

    首先点击Settings设置
    在这里插入图片描述
    然后点击Trace 设置我们芯片的系统频率,点击Teace Enable 使能

    如果工作频率设置不正确,则会造成测量的时间不正确。

    仿真器默认采用的是10MHz的工作频率

    在这里插入图片描述

    首先我们点击DEBUG模式
    在这里插入图片描述
    1.然后会跳转到main.c

    我们可以看到从系统启动到main.c所需要的时间是0.00000367秒

    2.我们在需要测量的程序段开始和结束的地方设置断点

    3 通过起始断点和结束断点处读取到的时间,结束时间-起始时间,即可判断代码段执行的时间。


    我们用500ms延时的流水灯来举例:

    测量代码:

    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);	//PB0置0
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET); //PB1置0
    		delay_ms(500);
    

    在这里插入图片描述
    点击RUN 运行代码 到起始断点处停止

    记录下此时时间 t1=0.00008590s

    在这里插入图片描述

    再次点击RUN 运行代码 到结束断点处停止

    记录下此时时间 t2=0.50014558s

    代码运行时间是: t2-t1=0.50014558-0.00008590=0.50005968s≈500ms

    最后的0.00005968s 是运行上面两个LED高电平函数,所需要的CPU指令时间以及误差时间

    总结:

    使用keil的debug模式进行测量,非常方便,可以很随意的对任意段代码进行测量,并且误差很小,操作方便。

    2 使用逻辑分析仪或示波器等设备测量

    在待测程序段的开始阶段使单片机的一个GPIO输出高电平,在待测程序段的结尾阶段再令这个GPIO输出低电平。用示波器或者逻辑分析仪通过检查高电平的时间长度,就知道了这段代码的运行时间。

    while(1){
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1置1
    		delay_ms(500);
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);	//PB1置0
    		delay_ms(500);
    	}
    

    延时500ms时波形如下:
    在这里插入图片描述

    修改延时为100ms:

    while(1){
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1置1
    		delay_ms(100);
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);	//PB1置0
    		delay_ms(100);
    	}
    

    波形如下
    在这里插入图片描述
    总结:

    使用示波器测量较为准确,缺点是需要单独的示波器或者逻辑分析仪等,示波器一般体积较大的还需要供电,并且还要连接GPIO口,还是有点麻烦的

    3 使用STM32自带定时器进行测量

    定时器本质上就是向上累加的计数器(如果配置成向上计数时),所以我们在测量开始的代码前面读取定时器的计数器,在结束测量的位置再读取定时器的计数器,获得两次的差值,这样就可以计算出这段代码的运行的时间。 这就是其原理

    这里我们使用TIM3定时器

    定时器初始化:

    • 定时器3初始化,我们使用STM32H7,定时器时钟为200M,分频系数为20000-1,
    • 所以定时器3的频率为200M/20000=10KHz 周期是T=1/F=1/10000=100us ,自动重装载为65535-1,
    • 那么定时器周期就是T=65535*100us=6.5535s
    void TIM3_Init(u16 arr,u16 psc)
    {  
        TIM3_Handler.Instance=TIM3;                          //通用定时器3
        TIM3_Handler.Init.Prescaler=psc;                     //分频
        TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
        TIM3_Handler.Init.Period=arr;                        //自动装载值
        TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
        HAL_TIM_Base_Init(&TIM3_Handler);
        
        HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断:TIM_IT_UPDATE    
    }
    
    
     TIM3_Init(65535-1,20000-1); //定时器3初始化,定时器时钟为200M,分频系数为20000-1,
    //所以定时器3的频率为200M/20000=10KHz  周期是T=1/F=1/10000=100us ,自动重装载为65535-1,
    //那么定时器周期就是T=65535*100us=6.5535s
    
    
    

    代码测试:

    我们还是以LED流水灯翻转200ms为例,看下定时器测得的时间:

    
    int  Start_count=0;  //开始计时定时器值
    int  End_count=0;   //结束计时定时器值
    int  Time;  //代码运行时间
    
    
    int main(void)
    {	
    
    	Cache_Enable();                		//打开L1-Cache
    	HAL_Init();				        	//初始化HAL库
    	Stm32_Clock_Init(160,5,2,4);  	    //设置时钟,400Mhz 
    
    	LED_Init();							//初始化LED
        TIM3_Init(65535-1,20000-1);      	//定时器3初始化,定时器时钟为200M,分频系数为20000-1,
    	//所以定时器3的频率为200M/20000=10KHz  周期是T=1/F=1/10000=100us ,
    	//自动重装载为65535-1,那么定时器周期就是6.5535S
    	
    	//计数1次等于100us  单位0.1ms 
    	
        while(1)
        {
    		//开始计时
    		Start_count=__HAL_TIM_GET_COUNTER(&TIM3_Handler); //获取定时器的值,开始计时
    		
           	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1置1
    		delay_ms(100);
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);	//PB1置0
    		delay_ms(100);
    		
    		//结束计时
    		End_count=__HAL_TIM_GET_COUNTER(&TIM3_Handler);  //获取定时器的值,结束计时	
    		Time=(End_count-Start_count)/10;  //时间(ms)=结束值-开始值+定时器溢出次数*65535
    		
    	} 
    }
    
    
    

    上面代码的思想就是在代码开始运行前,测得定时器的初始值,然后在代码结束的位置,再测得定时器的值,最终的代码运行时间:

    Time=(End_count-Start_count)/10; //时间(ms)=结束值-开始值

    测得时间为200ms
    在这里插入图片描述

    当然,如果我们的代码运行时间超过了6.5535秒,就要考虑定时器中断溢出的情况,我们的代码如下:

    
    
    int  COUNT=0;  //定时器溢出次数
    int  Start_count=0;  //开始计时定时器值
    int  End_count=0;   //结束计时定时器值
    int  Time;
    
    
    int main(void)
    {	
    
    	Cache_Enable();                		//打开L1-Cache
    	HAL_Init();				        	//初始化HAL库
    	Stm32_Clock_Init(160,5,2,4);  	    //设置时钟,400Mhz 
    	delay_init(400);				//延时初始化
    	LED_Init();							//初始化LED
        TIM3_Init(65535-1,20000-1);      	//定时器3初始化,定时器时钟为200M,分频系数为20000-1,
    	//所以定时器3的频率为200M/20000=10KHz  周期是T=1/F=1/10000=100us ,
    	//自动重装载为65535-1,那么定时器周期就是6.5535S
    	
    	//计数1次等于100us  单位0.1ms 
    	
        while(1)
        {
    		//开始计时
    		COUNT=0;  //每次开始计时将COUNT清零
    		__HAL_TIM_SET_COUNTER(&TIM3_Handler,0); //获取定时器的值,开始计时
    		
           	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1置1
    		delay_ms(100);
    		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);	//PB1置0
    		delay_ms(100);
    		
    		//结束计时
    		End_count=__HAL_TIM_GET_COUNTER(&TIM3_Handler);  //获取定时器的值,结束计时	
    		Time=(End_count+COUNT*65535)/10;  //时间(ms)=结束值-开始值+定时器溢出次数*65535
    		
    	} 
    }
    //定时器3中断服务函数调用
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
        if(htim==(&TIM3_Handler))
        {
           COUNT++;
        }
    }
    
    

    上面代码的思想就是在代码开始运行前,定时器的计数值设置为0,然后在代码结束的位置,再测得定时器的值,如果代码运行时间过长,定时器中断中COUNT就加1,最终的代码运行时间:

    Time=(End_count+COUNT65535)/10; //时间(ms)=结束值+定时器溢出次数65535

    测得时间为200ms

    在这里插入图片描述
    总结:
    这种方法比较方便的是代码的运行时间是一个变量,我们可以在程序中使用这个变量,这是很方便的,但是要占用一个定时器。

    请添加图片描述
    请添加图片描述

    展开全文
  • java 使用return终止代码继续运行

    千次阅读 2021-03-15 12:29:28
    package stop;import org.junit.Test;public class ReturnNullTest {/*** @param args*/public static void main(String[] args) {new ReturnNullTest().stop();if (false) {return;}// 前面没有return 语句,则会...

    package stop;

    import org.junit.Test;

    public class ReturnNullTest {

    /**

    * @param args

    */

    public static void main(String[] args) {

    new ReturnNullTest().stop();

    if (false) {

    return;

    }

    // 前面没有return 语句,则会继续执行下面打印语句

    System.out.println("after stop");

    }

    @Test

    public void test1() {

    new ReturnNullTest().stop();

    if (true) {

    return;

    }

    // 最后一条语句不会继续执行

    System.out.println("after stop");

    }

    @Test

    public void test2() {

    new ReturnNullTest().stop();

    // 下面如果直接return 则编译器会直接报错

    // return;

    System.out.println("after stop");

    }

    public void stop() {

    if (true) {

    System.out.println("first");

    return;

    }

    System.out.println("second");

    }

    public String returnStop() {

    if (true) {

    System.out.println("returnStop first");

    return "huangbiao";

    }

    System.out.println("returnStop second");

    return null;

    }

    @Test

    public void test3() {

    String result = new ReturnNullTest().returnStop();

    System.out.println(result);

    // 下面如果直接return 则编译器会直接报错

    // return;

    System.out.println("after stop");

    }

    }

    展开全文
  • 3个方式教你终止python代码运行

    万次阅读 2021-11-10 14:40:12
    方法一: import sys sys.exit() # 退出当前程序,但不重启shell 方法二: exit() # 退出当前程序,并重启shell 方法三: quit() # 与exit()效果一样,退出并重启shell ...结尾给大家推荐一个非常好的学习教程,希望...

    方法一:

    import sys
    
    sys.exit()  # 退出当前程序,但不重启shell
    

    方法二:

    exit()  # 退出当前程序,并重启shell
    

    方法三:

    quit()  # 与exit()效果一样,退出并重启shell
    

    结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

    展开全文
  • 在程序开发中经常会用到比较代码执行效率问题,可以用System.currentTimeMillis()方法来记录一下 long start,end; start = System.currentTimeMillis(); end = System.currentTimeMillis(); System.out.println(...
  • 标签:VSCode 用来写C++挺方便的,但是有个问题,在运行结束以后会马上退出,看不到窗口内容。网上很多方法都是在程序最后加getchar()语句,或者用system("pause"),来达到运行结束以后,再按任意键才会退出的效果。...
  • 因为之前安装过同时过python3.5,3.6,导致安装不上gdal,彻底卸载,安装3.8,...但是打开pycharm运行之前的代码,发现提示:进程已结束,退出代码为 -2147024891,还有一直在连接控制台,用这个方法解决了控制台的问题:...
  • #define LOCAL #include #define INF 1000000000 int main() { #ifdef LOCAL freopen("input.txt","r",stdin); freopen("data.txt","w",stdout); #endif // LOCAL int x,n=0,min=INF,max=-INF,s=0;...}
  • python如何运行代码

    千次阅读 2021-03-06 01:40:04
    当Python运行脚本时,在代码开始进行处理之前,Python还会执行一些步骤。(推荐学习:Python视频教程)第一步是编译成所谓的“字节码”,如果Python进程拥有写入权限,将把程序的字节码保存为一个以.pyc为扩展名的文件...
  • 当Python运行脚本时,在代码开始进行处理之前,Python还会执行一些步骤。(推荐学习:Python视频教程)第一步是编译成所谓的“字节码”,如果Python进程拥有写入权限,将把程序的字节码保存为一个以.pyc为扩展名的...
  • pycharm运行爬虫代码只显示Process finished with exit code 0的解决办法 即 运行代码只有这个,没有print输出任何东西,这种情况是exit code 0 表示程序执行成功,正常退出。但是没有输出内容,很气人。 确定解释...
  • PyCharm:进程以退出代码0结束

    万次阅读 2020-12-23 15:31:22
    9 个答案:答案 0 :(得分:22)...编辑器脚本的行为与交互式终端不同,当您运行某个功能时,它不会自动显示结果。你需要实际告诉它自己做。通常,您只需print结果。如果您使用print(data.shape),则应返回您对成功消...
  • Python获取代码运行时间的四种方法

    万次阅读 多人点赞 2019-01-21 20:19:46
    注:程序执行时间 = cpu时间 + io时间 + 休眠或者等待...只计算了程序运行CPU的时间,返回值是浮点数 import time start =time.clock() #中间写上代码块 end = time.clock() print('Running time: %s Seconds'%(end...
  • 1,在Project>Options for Target[你的项目名称]里设置晶振频率为实际单片机晶振...3,在想测算运行时间的程序段的第一句语句上右键选择Set Program Counter设置程序调试运行开始点 4,在想测算运行时间的程序...
  • eclipse、Java结束当前运行的程序代码

    千次阅读 2019-07-12 19:00:07
    System.exit(0);
  • js 使用console计算代码运行时间

    万次阅读 2017-08-23 17:51:30
    那么问题来了,我们怎么计算出一段代码运行时间呢?使用console.log配合Date对象计算比如,我们计算sort方法排序十万个随机数组成的数组需要用多长时间的话,可以这么写: var arr = []; for(var i=0; i; i++){ ...
  • 如何用python重新运行程序

    千次阅读 2021-01-29 21:55:58
    我想知道如何重新运行这个程序...运行完这段代码后,只需打开python窗口并立即关闭它。在def sifra():retezec = input("Zadejte slovo: ")print("Zadali jste slovo: ",retezec)zprava = 0posun = int(input("Zadej...
  • C# 结束程序代码

    千次阅读 2017-08-23 15:00:52
    this.Close(); System.Environment.Exit(0);
  • GetTickCount GetTickCount是一种函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。 需要添加头文件**#include<... //开始时间 for (int ...
  • 当Python运行脚本时,在代码开始进行处理之前,Python还会执行一些步骤。第一步是编译成所谓的"字节码”,如果Python进程拥有写入权限,将把程序的字节码保存为一个以.pyc为扩展名的文件, 如果Python无法在...
  • python 终止、结束、退出 代码

    千次阅读 2022-03-05 14:55:43
    python 终止、结束、退出 代码 import sys print("执行代码") # 终止程序 sys.exit(0) # 0:正常退出 1:异常退出 print("检查代码") 执行代码 Process finished with exit code 0
  • 一个C语言的执行是从本程序的main函数开始,到main函数结束,但需要注意的是,也是有特殊情况的,若是代码中出现了exit函数,则直接结束程序,对于这一点还是需要了解的。关于c语言需要了解的是...
  • import time # 导入time模块 start_time = time.time() # 记录代码开始时间 for i in range(10000000): a = 1 + 1 end_time = time.time() # 记录代码结束时间 run_time = end_time - ...
  • Idea中Java代码修改以后运行代码不生效 解决 问题点: 代码提交到本地,清楚idea 缓存,重新编译也没有用。 解决:Maven clean 一可以了 。 两个Modules 所以clean 两个即可。 clean 成功之后就可以重新启动项目...
  • 测量pytorch代码段的运行时间

    千次阅读 2020-08-05 06:49:39
    测量pytorch代码段的运行时间 2020/6/12 FesianXu @ Tencent internship 前言 在pytorch中,我们经常需要测量某个代码段,某个类,某个函数或者某个算子的运行时间,以判断整个模型的速度瓶颈所在,本文介绍一些...
  • python如何停止运行

    千次阅读 2020-11-21 00:02:20
    python是解释运行的程序,程序进入死循环或者其它异常都会导致程序无法正常结束。虽然python程序不会像exe程序那样是系统进入难以恢复的异常,但是却会使python解释器不能继续往下工作,尤其是采用命令行模式时。...
  • codeblocks中有时候运行程序后,运行结果窗口会自动关闭(我的cb版本为16.01)。以下是一种可能的情况:点击菜单栏上的Project -&gt; Properties -&gt; Build targets在Type中将Pause when execution ends ...
  • /**********吐槽结束开始正文****************/ 1.首先win下的java运行怎样在linux shell 里执行,如果只有单一的一个主入口非常简单的java xxxx.java javac xxxx.java 什么的就行,网上一大堆,想
  • Linux安装gcc和运行代码教程

    万次阅读 2021-08-06 15:02:32
    等待安装结束,输入gcc -v或者gcc -version 检查gcc版本,如果出现以下内容,说明安装好了。 如果出现以下内容,说明安装失败: 3、更新 安装失败原因可能是你的已安装软件与要下载的gcc版本不对应,这是需要对你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,370,649
精华内容 548,259
关键字:

代码运行开始和运行结束