Perl 是否值得使用inline::C来加速数学运算

Perl 是否值得使用inline::C来加速数学运算,perl,optimization,performance,inline-c,Perl,Optimization,Performance,Inline C,我一直在开发一个perl程序来处理大量的dna。它输出的正是我所需要的,但是它比我希望使用NYTprof花费的时间要长得多。我已经缩小了主要问题区域,使之成为将我的值相加的循环。使用inline::C进行计算会使我的程序更快吗?还是我应该接受速度并继续前进?还有别的办法提高速度吗?是我的程序和它将运行的输入,也是一个已输入默认值的可执行文件。您不太可能在这里得到有用的帮助(包括)。我可以看到您的代码存在各种各样的问题,而这些问题都与语言的选择无关 使用CPAN。如果您正在解析genbank,那么

我一直在开发一个perl程序来处理大量的dna。它输出的正是我所需要的,但是它比我希望使用NYTprof花费的时间要长得多。我已经缩小了主要问题区域,使之成为将我的值相加的循环。使用inline::C进行计算会使我的程序更快吗?还是我应该接受速度并继续前进?还有别的办法提高速度吗?是我的程序和它将运行的输入,也是一个已输入默认值的可执行文件。

您不太可能在这里得到有用的帮助(包括)。我可以看到您的代码存在各种各样的问题,而这些问题都与语言的选择无关

  • 使用CPAN。如果您正在解析genbank,那么请使用一些

  • 您正在用Perl编写汇编,Perl和您都不擅长这一点。如果不将参数传递给子例程,而是到处依赖全局变量,则几乎不可能知道发生了什么。
    @X1、@X2、@Y1、@Y2
    是什么意思

  • 以下可能是您的问题:
    直到($ender-$starter>$tlength){
    (第153行)。根据您的测试用例,它们从103、1和200开始,并且不清楚它们何时或是否更改。根据
    @te
    中的内容,它可能会或可能永远不会退出循环;我只是无法从您的代码中判断

  • 如果我们确切地知道要添加的参数是什么、输入输出不变量以及它返回的内容,这会有所帮助


  • 这就是我所得到的。

    我支持PDL在评论中提出的建议(如果适用)。或者使用针对您的问题量身定制的CPAN模块(同样,如果适用)

    我在代码中没有看到任何明显类似于“将我的值添加到一起的循环”的东西;请仅显示您正在考虑优化的代码,理想情况下,其结构刚好足以实际运行它


    因此,一般地回答您的一般性问题,是的,如果您确信性能问题仅限于它实际能为您做什么,那么Inline::C可以是一个有用的优化工具。在使用它时,请注意从Perl调用C代码或从Perl调用C代码会非常昂贵,因此您必须将足够的代码转换为C到mi缩小转换。

    您是否尝试使用
    inline::C
    ?是否有效?我建议您在此处添加代码内联的相关摘录-函数/区域NYTProf指示为热;甚至可能是相关区域NYTProf信息的摘录-这将帮助人们更轻松地回答您的问题。听起来很难理解回答这样一个一般性的问题时,至少看不到您的程序和/或数据的一些基本描述。我正在执行高度迭代的任务。我的程序扫描dna文件,寻找特定的模式。根据所述模式的位置计算向量,并将其添加。codereview.stackexchange.com?这非常有帮助。我将时间缩短到大约3秒从五分钟开始。非常感谢。很高兴我能帮上忙!