开发者学堂课程【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、思考有无进一步优化空间(提示:内层循环)