质数练习_第一次优化|学习笔记

简介: 快速学习 质数练习_第一次优化

开发者学堂课程【Python 语言基础 1 :语法入门:质数练习_第一次优化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/599/detail/8695


质数练习_第一次优化


内容简介:

1、性能优化概念引入

2、性能优化方法

3、课后作业

 

一、概念引入

粘贴质数练习代码到本页:

i = 2

while i <= 100:

flag = True

j = 2

while j < i:

if  i % j == 0

flag = False

j += 1

if flag :

print(i)

i += 1

在开发时仅仅完成功能(属于业务逻辑)并不够,还要完善程序性能,性能越快越好。

 

二、性能优化方法:

1、基本方法

首先了解当下性能情况、程序执行花费时间,故可以运用 Python 内部程序来测试运行时间(程序运行之前记录一个时间,程序运行后记录一个时间,两个时间相减即为程序运行时间),则需要引入一个模块对 Python 功能进行扩展。

引入 time 模块,来统计程序执行时间(输入 from time import),即可引用 time函数

在 IDLE 中演示:

>>>from time import

>>>time()

1529819580.939246

>>>time()

1529810583.7845466

若是没有引入 time 函数则会报错 name ‘time’ is not defined

time 函数可以用来获取当前的时间,返回的单位是秒

操作演示:

获取程序开始的时间 begin = time()

i = 2

while i <= 100:

flag = True

j = 2

while j < i:

if  i % j == 0

flag = False

j += 1

if flag :

print(i)

i += 1

获取程序结束的时间 end = time()

计算程序执行的时间 print(“程序执行花费了:”,end — begin,“秒”)

执行结果显示 程序执行花费了: 0.001501321792602539秒

实际上程序执行的时间更短,因为在此例中使用的是打印语句print,测试时间固定,测试性能一般不用打印语句。本次测试虽然时间短,但不能代表性能好,因为本次测试太短数量级太小而没有意义。

2、使用 break 进一步优化

优化前:10000 个数用时 12.298秒

优化操作:        

begin = time()

i = 2

while i <= 10000:

flag = True

j = 2

while j < i:

if  i % j == 0

flag = False

(一旦进入判断,则证明一定不是质数,此时内层循环没有继续执行的必要,使用break 推出内层循环且 break 应写在 if 里)

break

j += 1

if flag :

print(i)

i += 1

获取程序结束的时间 end = time()

优化完成后执行时间为 1.577 秒(第一次优化 10000 个数)

 

三、课后作业:

1、测试代码执行时间

2、尝试通过 break 来对代码进行优化

3、思考有无进一步优化空间(提示:内层循环)

相关文章
|
6月前
|
C语言
c语言编程练习题:7-33 统计素数并求和
c语言编程练习题:7-33 统计素数并求和
54 0
求质数的几种方式
求质数的几种方式
|
机器学习/深度学习 算法
【算法基础】筛质数
【算法基础】筛质数
64 0
|
机器学习/深度学习 人工智能 算法
【算法基础】分解质因数
【算法基础】分解质因数
132 0
|
6月前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
6月前
|
C语言
每天一道C语言编程:求N以内的素数(普通方法+优化方法)
每天一道C语言编程:求N以内的素数(普通方法+优化方法)
86 0
|
存储 算法 Python
信息学奥赛 试除法:高效筛选素数的算法
本文介绍了在Python代码中如何使用试除法高效筛选素数。
134 0
|
算法 C语言
【C语言】判断一个数是否为素数(素数求解的N种境界)(下)
【C语言】判断一个数是否为素数(素数求解的N种境界)(下)
120 0
|
6月前
|
算法 C++
试除法求约数:深入分析与实践
试除法求约数:深入分析与实践
57 3
|
存储 Python
python 高效求解质数-- 埃氏筛法
python 高效求解质数-- 埃氏筛法
318 0
python 高效求解质数-- 埃氏筛法