# -*- 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的更多相关文章

  1. 第三章:Python高级编程-深入类和对象

    第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...

  2. 第九章:Python高级编程-Python socket编程

    第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...

  3. 第十一章:Python高级编程-协程和异步IO

    第十一章:Python高级编程-协程和异步IO Python3高级核心技术97讲 笔记 目录 第十一章:Python高级编程-协程和异步IO 11.1 并发.并行.同步.异步.阻塞.非阻塞 11.2 ...

  4. python高级编程:有用的设计模式2

    # -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一 ...

  5. python高级编程技巧

    由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr  ...

  6. python高级编程之选择好名称:完

    由于时间关系,python高级编程不在放在这边进行学习了,如果需要的朋友可以看下面的网盘进行下载 # # -*- coding: utf-8 -*- # # python:2.x # __author ...

  7. Python高级编程-Python一切皆对象

    Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 ""&qu ...

  8. python高级编程:有用的设计模式3

    # -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"&qu ...

  9. python高级编程:有用的设计模式1

    # -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言 ...

  10. python高级编程读书笔记(一)

    python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...

随机推荐

  1. js高级程序设计(第三版)学习笔记(第一版)

    ecma:欧洲计算机制造商协会iso/iec:国际标准化和国际电工委员会 dom级别(10*)文档对象模型1:DOM核心(映射基于xml文档)与dom html(在dom核心基础上)2:对鼠标,事件, ...

  2. pyqt记录内容(音乐播放器)

    #这是UI文件 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'AudioPlayerDia ...

  3. Hive集成HBase详解

    摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询   应用场景 1. 将ETL操作的数据存入HBase 2. HB ...

  4. codeforces C. Cd and pwd commands 执行命令行

    执行命令来改变路径 cd 并显示路径命令 pwd 一个节目的 抽样: input 7 pwd cd /home/vasya pwd cd .. pwd cd vasya/../petya pwd ou ...

  5. ViewPager实现页卡的3种方法(谷歌组件)

    ----方法一:---- 效果图: 须要的组件: ViewPager+PagerTabStrip 布局文件代码: <!--xmlns:android_custom="http://sc ...

  6. jQuery制作焦点图(轮播图)

    焦点图(轮播图) 案例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  7. Centos7安装Oracle JDK

    查看Linux是否自带的JDK,如有openJDK,则卸载 java -version

  8. cookie 和 session

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  9. C#高级编程第2章-核心C#

    内容提要: 声明变量:变量的初始化和作用域:C#的预定义数据类型:在C#程序中使用条件语句.循环和跳转语句指定执行流:枚举:名称空间: Main()方法:基本命令行C#编译器选项:使用System.C ...

  10. web.config中的profile

    aspnet_regsql命令创建需要的表结构 public class UserProfile:ProfileBase { [SettingsAllowAnonymous(true)] //默认匿名 ...