分析 Cython 代码时,啥是`stringsource`?

     2023-03-06     142

关键词:

【中文标题】分析 Cython 代码时,啥是`stringsource`?【英文标题】:When profiling Cython Code, what is `stringsource`?分析 Cython 代码时,什么是`stringsource`? 【发布时间】:2014-01-11 00:00:20 【问题描述】:

我正在尝试优化一个繁重的 Cython 函数。我正在按照以下教程 http://docs.cython.org/src/tutorial/profiling_tutorial.html 进行分析。我的配置文件输出如下所示:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    7.521    7.521   18.945   18.945 routing_cython_core.pyx:674(resolve_flat_regions_for_drainage)
  6189250    4.964    0.000    4.964    0.000 stringsource:323(__cinit__)
  6189250    2.978    0.000    7.942    0.000 stringsource:618(memoryview_cwrapper)
  6009849    0.868    0.000    0.868    0.000 routing_cython_core.pyx:630(_is_flat)
  6189250    0.838    0.000    0.838    0.000 stringsource:345(__dealloc__)
  6189250    0.527    0.000    0.527    0.000 stringsource:624(memoryview_check)
  1804189    0.507    0.000    0.683    0.000 routing_cython_core.pyx:646(_is_sink)
    15141    0.378    0.000    0.378    0.000 _gdal_array.BandRasterIONumPy
        3    0.066    0.022    0.086    0.029 /home/rpsharp/local/workspace/invest-natcap.invest-3/invest_natcap/raster_utils.py:235(new_raster_from_base_uri)
    11763    0.048    0.000    0.395    0.000 /usr/lib/python2.7/dist-packages/osgeo/gdal_array.py:189(BandReadAsArray)

特别是我对多次调用stringsource:323(__cinit__)stringsource:618(memoryview_cwrapper) 的第2 行和第3 行感兴趣。尽管我正在静态键入 numpy 数组,但 Google 发现了对我没有在该函数中使用的内存视图的引用。知道这些调用是什么,是否可以避免/优化它们?

【问题讨论】:

【参考方案1】:

好吧,原来我确实有记忆视图。我正在调用一个内联函数,该函数将一个静态类型的 numpy 数组传递给内存视图,从而调用了对 stringsource 的所有额外调用。用 numpy 类型替换函数调用中的 memoryview 类型修复了这个问题。

【讨论】:

为整个程序启用 Cython 分析?

】为整个程序启用Cython分析?【英文标题】:EnableCythonprofilingforwholeprogram?【发布时间】:2014-12-0917:01:55【问题描述】:Cython文档说“Cython中的分析由编译器指令控制。可以通过Cython装饰器为整个文件或每个函数设置它。”是否... 查看详情

Cython 似乎通过减少时间分析器而不是核心代码的开销来提供加速?

】Cython似乎通过减少时间分析器而不是核心代码的开销来提供加速?【英文标题】:Cythonseemstoprovidespeed-upbyreducingtheoverheadintimeprofilerratherthanthecorecode?【发布时间】:2018-03-1423:57:32【问题描述】:我试图学习和使用cython来加速我... 查看详情

使用 Cython 的 Line Profiling 内部函数

...时间】:2016-06-2821:14:01【问题描述】:我在使用thisanswer分析我的Cython代码方面取得了相当大的成功,但它似乎不适用于嵌套函数。在thisnotebook中,您可以看到在嵌套函数上使用线剖析器时配置文件不会出现。有没有办法让它工... 查看详情

这段代码有啥问题?啥是运行时错误?

】这段代码有啥问题?啥是运行时错误?【英文标题】:What\'sgoeswrongwiththiscode?Whatisruntimeerror?这段代码有什么问题?什么是运行时错误?【发布时间】:2021-01-2109:57:47【问题描述】:当我在URIOnline判断上提交此代码时,他们会显... 查看详情

Cython:pyximport:在 pyximport.install 中启用分析

】Cython:pyximport:在pyximport.install中启用分析【英文标题】:Cython:pyximport:enablingprofilinginpyximport.install【发布时间】:2015-05-0410:49:30【问题描述】:我的Python3项目经常使用cython。在生产部署中,我使用了一个构建脚本,其中包括... 查看详情

在 jupyter 笔记本中使用 cython 进行行分析

】在jupyter笔记本中使用cython进行行分析【英文标题】:Lineprofilingwithcythoninjupyternotebook【发布时间】:2019-08-2112:46:33【问题描述】:我正在尝试在jupyternotebook中使用带有cython函数的liner_profiler库。它只工作了一半。我得到的结果... 查看详情

从 cython c 调用 python 函数时的奇怪行为

】从cythonc调用python函数时的奇怪行为【英文标题】:Strangebehaviourwhencallingpythonfunctionsfromcythonc【发布时间】:2015-03-2614:20:17【问题描述】:我有一些C++代码、一些python代码和一些cython代码。在C++中,我有一个执行的异步回调,我... 查看详情

Cython:从 C 程序调用 Python 代码

】Cython:从C程序调用Python代码【英文标题】:Cython:CallingPythoncodefromCprogram【发布时间】:2014-01-0701:13:58【问题描述】:我正在尝试制作Cython包装器,以便我可以从C调用Python代码。我遇到了导入问题,因为我希望包装器与原始代... 查看详情

Cython 与 C 接口

】Cython与C接口【英文标题】:CythonInterfacingwithC【发布时间】:2021-07-1712:37:33【问题描述】:您好,我是Cython的新手,我想与现有的C代码交互,但在链接我的程序时遇到问题。在此之前,我有一个常规的cython模块工作了很多次,... 查看详情

spss单因素方差分析中啥是因子,啥是因变量

结局变量是因变量,影响因素是因子。比如不同性别样本间升高是否有统计学差值,性别选择为因子,升高为因变量参考技术A你这个结果不显著但是结果是有参考价值的因为f=t方,你换为t检验也是一个结论的 查看详情

使用 Cython 包装 C++ 类时处理指针

】使用Cython包装C++类时处理指针【英文标题】:HandlingpointerswhenwrappingC++classwithCython【发布时间】:2017-03-0211:44:22【问题描述】:我在使用cython处理指针时遇到问题。类的cython实现包含一个指向类Person的C++实例的指针。这是我的.p... 查看详情

为啥我们需要在编码时避免突变?啥是突变?

...发布时间】:2015-08-2008:24:40【问题描述】:为什么第二个代码(带有流的那个)比第一个更好?第一:publicstaticvoidmain(String[]args)List<Integer>valu 查看详情

为啥在迭代 NumPy 数组时 Cython 比 Numba 慢得多?

】为啥在迭代NumPy数组时Cython比Numba慢得多?【英文标题】:WhyisCythonsomuchslowerthanNumbawheniteratingoverNumPyarrays?为什么在迭代NumPy数组时Cython比Numba慢得多?【发布时间】:2019-04-0918:43:36【问题描述】:在遍历NumPy数组时,Numba似乎比Cy... 查看详情

安装 Cython 以与 Buildozer 一起使用时出错

】安装Cython以与Buildozer一起使用时出错【英文标题】:ErrorwheninstallingCythonforusewithBuildozer【发布时间】:2014-10-2501:14:02【问题描述】:我在安装Kivy时遇到了一个错误,它告诉我要安装Cython,所以我照做了。除了遇到错误外,我尝... 查看详情

使用 Cython 编译时找不到库文件

】使用Cython编译时找不到库文件【英文标题】:CannotfindlibraryfilewhencompilingwithCython【发布时间】:2017-11-0112:01:42【问题描述】:我正在构建/编译一个Cython项目:setup.caller.pyfromdistutils.coreimportsetupfromdistutils.extensionimportExtensionfromCyth... 查看详情

(iOS) 啥是superview,啥是subviews

...描述】:什么是超级视图,什么是子视图?当我添加这段代码时:[self.viewaddSubview:self.frontView];//whatdoesthatmean?还有……@p 查看详情

使用 cython 在图上执行框覆盖

】使用cython在图上执行框覆盖【英文标题】:Performtheboxcoveringonagraphusingcython【发布时间】:2015-10-1523:19:53【问题描述】:我编写了一个python脚本来在图上执行框覆盖,但是当我在小图(100个节点)上运行它时需要一分钟多的时... 查看详情

使用 ARM GCC 时,啥是“nosys”、“nano”、“rdimon”术语?

...4-0318:56:42【问题描述】:我正在学习使用GCC工具链编写ARM代码。我 查看详情