python高级编程(第12章:优化学习)1
# -*- coding: utf-8 -*-
# python:2.x
__author__ = 'Administrator'
#由于5,6,7,8,9,10,11主要是在包,测试之类的学习所以这边就不学习
#优化:通用原则和剖析技术
print(u'过早进行优化是编程中万恶之源-------Donald Knuth')
#1:优先三原则
"""
无论结果如何,优化是需要代价的,当代码能够正常工作时,不用会理会它(有时)可能比不惜一切代价尝试让它运行得更快要好一些
当优化代码,需要3条原则:
1:首先能够让它正常工作
2:从用户的观点进行
3:保持易读的代码风格
"""
#首先能够让它正常工作
"""
当一边编写代码和一边优化代码时是最常见的错误,这是不可能的,因为瓶颈往往会出现意想不到的地方
应用程序是由很多复杂的交互组成的,在实际使用之前不可能得到一个完整的视图
当然,这不是不尝试尽可能编写更快的函数或者方法的理由。应该认真地使其复杂度尽可能降低,并避免无用的重复,所以,首先能够让它正常工作!
对于行级代码 ,python哲学是完成一个目标尽可能有且只有一个方法,所以只要坚持第2和第3章中介绍的python风格语法,则往往写出来的代码就会更好并且更快
在剖析之前,不要做以下之事
1:开始编写为函数缓存数据的全局字典
2:考虑以C语言或者Pyrex之类混杂语言来对代码的一个部分进行扩展
3:寻找外部程序库来完成一些基本计算
"""
#扩展模块:NUMERIC可以简化开发并且能够生成简单,更快速的代码,而且不应该在有很好的程序库可利用的时候自己重新编写一个函数
#Soya 3d是基于opengl游戏引擎,使用c和pyrex开发的,作用是:显示实时的3D图形时执行快速的矩形操作
#Soya 3d官方:(http://home.gna.org/oomadness/en/soya3d/index.html)
#OpenAL(Open Audio Library)是自由软件界的跨平台音效API。它设计给多通道三维位置音效的特效表现 ,部分软件需要此功能的支持,
#GLEW(是一个跨平台的C++扩展库,基于OpenGL图形接口。),介绍:http://blog.csdn.net/pythonfx/article/details/9771047
#SDL(是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。):http://zh.wikipedia.org/wiki/SDL
#Cal3D(骨骼动画系统Cal3D)官方:http://home.gna.org/cal3d/
#libFreeType2(一个免费软件 图书馆呈现字体)官方:http://www.freetype.org
#freefont(python验证码生成工具模块)官方:http://fontfabric.com,例子:http://www.oschina.net/code/snippet_129830_17856
#ode(一个开源、高性能库模拟刚体动力学。 它功能齐全,稳定、成熟和独立的平台 容易使用C / c++ API。 它拥有先进的联合类型和集成与摩擦碰撞检测。 颂歌是用于模拟车辆在虚拟对象 现实和虚拟生物的环境。 目前用在许多电脑游戏,3 d创作工具和仿真工具。)官方:http://www.ode.org
#更多请看:http://home.gna.org/oomadness/en/soya3d/index.html
print ('优化应该在已经能够正常工作的程序上进行,先间它能够正常工作,然后让它变得更好,最好使它更快---kent beck')
#从用户观点进行
"""
虽然能够让程序更好更快启动是一种好事,但是应该认真地安排优化的优先级,并且提出以下问题:
1:客户是否要求要求提速
2:谁发现程序慢了?
3:提速需要多少成本,值得吗?那些部分需要提速?
记住:优化是有成本的,开发人员的观点是对客户来说也许没什么意义,除非编写是框架或者程序库,客户也是开发人员!
注意:优化不是一个游戏,它应该只在必要时进行
"""
#保持代码易读(从而易于维护)
"""
当优化到一定目标是,如果还有一部分没有理解,那些应该停止工作并且寻求其他解决方案可能是个好主意!
优化不应该让代码难以理解,如果出现这样情况,应该寻求替代方法,如扩展或者重新设计,不过在代码易读生和速度上总会有一个好的折衷方案
"""
python高级编程(第12章:优化学习)1的更多相关文章
- 第三章:Python高级编程-深入类和对象
第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...
- 第九章:Python高级编程-Python socket编程
第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...
- 第十一章:Python高级编程-协程和异步IO
第十一章:Python高级编程-协程和异步IO Python3高级核心技术97讲 笔记 目录 第十一章:Python高级编程-协程和异步IO 11.1 并发.并行.同步.异步.阻塞.非阻塞 11.2 ...
- python高级编程:有用的设计模式2
# -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一 ...
- python高级编程技巧
由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr ...
- python高级编程之选择好名称:完
由于时间关系,python高级编程不在放在这边进行学习了,如果需要的朋友可以看下面的网盘进行下载 # # -*- coding: utf-8 -*- # # python:2.x # __author ...
- Python高级编程-Python一切皆对象
Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 ""&qu ...
- python高级编程:有用的设计模式3
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"&qu ...
- python高级编程:有用的设计模式1
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言 ...
- python高级编程读书笔记(一)
python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...
随机推荐
- php之手机号码查归属地
免费手机号码归属地API查询接口 一.淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=1585078144 ...
- <Win32_6>程序员求爱的创意程序^_^
作为程序员,我们时常被外界误认为很闷.不浪漫.没创意……等等这一类人,这让我们实在有些感伤啊,我得为程序员呐喊一声: 我们也能可以欢快.浪漫.有创意…… 朋友,你向女生表白过吗? …… 这个问题有点儿 ...
- Arcgis API for Android之GPS定位
欢迎大家增加Arcgis API for Android的QQ交流群:337469080 先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己曾经在做相关工作的时候做过相关的 ...
- Pig系统分析(6)-从Physical Plan到MR Plan再到Hadoop Job
从Physical Plan到Map-Reduce Plan 注:由于我们重点关注的是Pig On Spark针对RDD的运行计划,所以Pig物理运行计划之后的后端參考意义不大,这些部分主要分析流程, ...
- linux下安装软件的方法
1. 区分 rpm -qi -qf -ql -qa四个不同选项组合的作用?rpm -qi //查询已经安装的某个RPM软件包的信息rpm -qf //查询某个程序文件是由哪个RPM软件包安装的rpm ...
- CSS样式之背景、文本
一.背景 1.背景颜色用background-color属性,例如:body{background-color:red} 2.用图像做背景用background-image属性,例如b ...
- [OC笔记] static 关键字
在变量声明前加上static关键字,可以使局部变量保留多次方法调用所得到的值.当多个方法对一个静态变量进行操作时,多个方法共享同一个静态变量的值.
- c#字符串方法
作者: 常浩 staticvoid Main(string[] args) { string s =""; //(1)字符访问(下标访问s[i]) s ="ABCD&qu ...
- 5 输出的properties文件按照key进行排序
import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; ...
- bootstrap-paginator 分页控件的使用
首先对js和css的引用 <link rel="stylesheet" href="reference/bootstrap/css/bootstrap.min.cs ...