# -*- 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. VMware vSphere 5.5的12个更新亮点(3)

    端口镜像 有时有必要捕捉网络中的数据包来追踪问题.最新版本的vSphere包括一个增强版的开源数据包分析器tcpdump和一些镜像端口的选项以捕捉各种场所的流量.您可以捕获虚拟网卡,虚拟交换机,以及主 ...

  2. World Wind Java开发之十五——载入三维模型

    之前的一篇博客是关于载入粗三维模型的,见http://blog.csdn.net/giser_whu/article/details/43452703,这个地方还存在着不能载入纹理的问题,一直没呢解决 ...

  3. HTML页面之间跳转与传值(JS代码)

    跳转的方法如下: 方法一: window.location.href = "b.html"; 方法二(返回上一个页面,这个应该不算,先放在这): window.history.ba ...

  4. oracle得到拼音函数

    CREATE OR REPLACE FUNCTION fgetpy (v_str VARCHAR2)   RETURN VARCHAR2AS   v_strlen   INT;   v_return  ...

  5. 利用“参数赋值”防范SQL注入漏洞攻击

    <<年轻,无权享受>————送给每一个看到此文的同僚们 在这无精打采的炎夏 我躺在阳台上房东的旧沙发 回想几个月来遇到的问题 我不禁内心开始慌张喘着粗气 还有大把时间去打拼 没有到只 ...

  6. Oracle复杂查询

    1:列出所有员工的姓名,部门名称,和工资 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno ...

  7. hdu 1282 回文数猜想

    Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...

  8. c#鼠标在控件上面,然后显示文字

    先添加toolTip控件到界面 然后每个控件的属性会多一项 ToolTip 第一种:直接给里面加文字 第二种: private void pictureBox_topmost_MouseHover(o ...

  9. 关于Windows8.1更新后Sql Server服务消失的处理办法

    前言 微软在17日发布了windows8.1,兴致勃勃地花了半天的时间更新了,不过不知所云的是,在20日又被卸下Windows Store.此为背景. 影响 更新完毕做开发的时候,发现SqlServe ...

  10. php----浅谈一下empty isset is_null的用处

    } }    {      }  {       } } }    {      }  {       } is_null():判断变量是否为null if ($a){} 那这个未声明变量会报noti ...