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 ...
随机推荐
- js高级程序设计(第三版)学习笔记(第一版)
ecma:欧洲计算机制造商协会iso/iec:国际标准化和国际电工委员会 dom级别(10*)文档对象模型1:DOM核心(映射基于xml文档)与dom html(在dom核心基础上)2:对鼠标,事件, ...
- pyqt记录内容(音乐播放器)
#这是UI文件 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'AudioPlayerDia ...
- Hive集成HBase详解
摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询 应用场景 1. 将ETL操作的数据存入HBase 2. HB ...
- codeforces C. Cd and pwd commands 执行命令行
执行命令来改变路径 cd 并显示路径命令 pwd 一个节目的 抽样: input 7 pwd cd /home/vasya pwd cd .. pwd cd vasya/../petya pwd ou ...
- ViewPager实现页卡的3种方法(谷歌组件)
----方法一:---- 效果图: 须要的组件: ViewPager+PagerTabStrip 布局文件代码: <!--xmlns:android_custom="http://sc ...
- jQuery制作焦点图(轮播图)
焦点图(轮播图) 案例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- Centos7安装Oracle JDK
查看Linux是否自带的JDK,如有openJDK,则卸载 java -version
- cookie 和 session
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- C#高级编程第2章-核心C#
内容提要: 声明变量:变量的初始化和作用域:C#的预定义数据类型:在C#程序中使用条件语句.循环和跳转语句指定执行流:枚举:名称空间: Main()方法:基本命令行C#编译器选项:使用System.C ...
- web.config中的profile
aspnet_regsql命令创建需要的表结构 public class UserProfile:ProfileBase { [SettingsAllowAnonymous(true)] //默认匿名 ...