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

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

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

相关文章
|
机器学习/深度学习 算法
【算法基础】筛质数
【算法基础】筛质数
75 0
|
9月前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
9月前
【错题集-编程题】素数回文(模拟 + 数学)
【错题集-编程题】素数回文(模拟 + 数学)
|
算法 C语言
【C语言】判断一个数是否为素数(素数求解的N种境界)(下)
【C语言】判断一个数是否为素数(素数求解的N种境界)(下)
139 0
【算法】Leetcode算法题-求两数之和
【算法】Leetcode算法题-求两数之和
【算法】Leetcode算法题-求两数之和
|
测试技术 C语言
【C语言】判断一个数是否为素数(素数求解的N种境界)(上)
【C语言】判断一个数是否为素数(素数求解的N种境界)
316 0
数论整理之特殊数one:斐波那契数列
数论整理之特殊数one:斐波那契数列
109 0
质数练习_第一次优化
质数练习_第一次优化自制脑图 性能优化方法:基本方法,在 IDLE 中演示,使用 break 进一步优化
69 0
质数练习_第一次优化
|
存储 SQL 算法
两数之和算法讨论
两数之和算法讨论
两数之和算法讨论
|
算法 C++
算法基础系列第四章——数论之质数与约数(2)
算法基础系列第四章——数论之质数与约数(2)
147 0
算法基础系列第四章——数论之质数与约数(2)