我在执行从C编译函数到Cython的迁移时遇到了性能度量问题(通过精纺)从Python引擎调用。你知道吗
用cProfile
对新的cython函数进行端到端分析(如果没有必要,我就不深入研究cython分析)记录高度可变的累积测量时间。你知道吗
例如,cython函数每5次重复执行9次的累积时间(在5次执行的预热之后-评测函数没有考虑到这一点)是:
每次执行都使用不同但固定的参数多次调用函数。 也许这种可变性可能取决于测试机器(一个云托管的专用机器)的CPU负载,但我想知道这种可变性(几乎10%)是否取决于cython或缺乏优化(我已经使用了关于除法、边界检查、环绕等的提示)。你知道吗
你知道如何采用可靠的度量标准吗?你知道吗
我不是一个性能专家,但根据我的理解,你应该衡量的是每次执行的平均时间,而不是累计时间?除此之外,您的功能还包括读取磁盘和/或发出网络请求吗?你知道吗
首先,您需要确保您的测量设备能够测量您所需要的:具体来说,只有您消耗的系统资源。UNIX的
utime
就是这样一个命令,尽管这个命令仍然包含交换时间。查看profiler的文档:它应该具有只测量函数消耗的CPU时间的功能。如果是这样,那么你的数字是由于其他原因。你知道吗一旦控制了外部变量,就需要检查内部变量。你什么也没说你身体的状况。一些(很多?)函数对于数据驱动的琐碎事务(如乘0或1)有可用的捷径。有些依赖于随数据变化的公开或隐蔽迭代。您需要分析与算法相关的输入数据。你知道吗
一个可以使用的工具是一个面向线的探查器,它可以详细说明变化的起源;查看哪些线需要额外的时间,这将有助于确定“噪声”来自何处。你知道吗
相关问题 更多 >
编程相关推荐