- 内容提要
- 前言
- 作者简介
- 封面简介
- 第1章 理解高性能 Python
- 第2章 通过性能分析找到瓶颈
- 2.1 高效地分析性能
- 2.2 Julia 集合的介绍
- 2.3 计算完整的 Julia 集合
- 2.4 计时的简单方法——打印和修饰
- 2.5 用 UNIX 的 time 命令进行简单的计时
- 2.6 使用 cProfile 模块
- 2.7 用 runsnakerun 对 cProfile 的输出进行可视化
- 2.8 用 line_profiler 进行逐行分析
- 2.9 用 memory_profiler 诊断内存的用量
- 2.10 用 heapy 调查堆上的对象
- 2.11 用 dowser 实时画出变量的实例
- 2.12 用 dis 模块检查 CPython 字节码
- 2.13 在优化期间进行单元测试保持代码的正确性
- 2.14 确保性能分析成功的策略
- 2.15 小结
- 第3章 列表和元组
- 第4章 字典和集合
- 第5章 迭代器和生成器
- 第6章 矩阵和矢量计算
- 第7章 编译成 C
- 第8章 并发
- 第9章 multiprocessing 模块
- 第10章 集群和工作队列
- 第11章 使用更少的 RAM
- 第12章 现场教训
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第6章 矩阵和矢量计算
读完本章之后你将能够回答下列问题
矢量计算的瓶颈在哪里?
我可以用什么工具查看CPU进行计算时的效率?
numpy为什么比纯Python更适合数值计算?
cache-miss和page-faults是什么?
我如何追踪代码中的内存分配?
无论你尝试在计算机上解决什么问题,你都会在某个时候遇到矢量计算。矢量计算是计算机工作原理不可或缺的部分,也是在芯片层次上对程序运行时间进行加速所必须了解的部分——计算机只知道如何对数字进行操作,而了解如何同时进行多个这样的计算能够加速你的程序运行。
在本章,我们通过解决一个相对简单的数学问题,扩散等式求解,来揭示这个问题的复杂度并理解CPU层面上发生了什么。通过理解Python代码如何影响CPU以及如何有效探测这些影响,我们就可以举一反三地学习如何理解其他 问题。
我们将首先介绍扩散等式问题并提供一个纯Python的快速解决方案。我们随后会指出该方案中的一些内存问题并试图用纯Python解决它们,我们会介绍numpy并验证它是如何以及为什么能够加速我们的代码的。然后我们会开始进行一些算法的改变并特化我们的代码来解决手上的问题。通过移除我们所使用的库中的一些通用性函数,我们就能够再一次提升速度。最后我们会介绍一些额外的模块,它们将帮助我们在实际工作中简化这种流程,然后浏览一个小故事,告诫我们不要急于在性能分析之前进行优化。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论