提升性能¶
Manim 作为动画库的主要缺点之一是其性能缓慢。截至撰写本文时(2022 年 1 月),该库仍未得到充分优化。因此,我们非常鼓励贡献者协助优化代码。
性能分析¶
在优化库之前,我们首先需要通过性能分析来识别性能瓶颈。有许多 Python 性能分析工具可用于此目的;例如 cProfile 和 Scalene。
将动画作为脚本运行¶
大多数性能分析工具的说明都假定您可以直接从命令行将 Python 文件作为脚本运行。虽然 Manim 动画通常从命令行运行,但我们可以通过在文件底部添加类似以下内容将其作为脚本运行:
with tempconfig({"quality": "medium_quality", "disable_caching": True}):
scene = SceneName()
scene.render()
其中 SceneName
是您要运行的场景的名称。然后您可以直接运行该文件,从而可以遵循大多数性能分析工具的说明。
示例:使用 cProfile 和 SnakeViz 进行性能分析¶
安装 SnakeViz
pip install snakeviz
cProfile 已包含在 Python 的标准库中,无需安装。
假设我们要分析 SquareToCircle
的性能。然后我们将以下代码添加到 square_to_circle.py
并保存:
from manim import *
class SquareToCircle(Scene):
def construct(self):
s = Square()
c = Circle()
self.add(s)
self.play(Transform(s, c))
with tempconfig({"quality": "medium_quality", "disable_caching": True}):
scene = SquareToCircle()
scene.render()
现在在终端中运行以下命令:
python -m cProfile -o square_to_circle.txt square_to_circle.py
这将创建一个名为 square_to_circle.txt
的文件。
现在,我们可以在性能分析文件上运行 SnakeViz:
snakeviz square_to_circle.txt
将打开一个浏览器窗口或标签页,显示性能分析的可视化结果,大致如下所示:
