【发布时间】:2012-12-13 01:29:41
【问题描述】:
我正在优化一个软件,最昂贵的行是代码的文本处理行。通过拆开程序并注释掉某些部分,我发现 if 语句中的一个小参数导致了程序中的大部分瓶颈。在声明中它询问是否
allele1 %in% rownames(seqMat)
为真,如果是,则调用后面的语句。这个 if 语句循环了数千次,导致程序显着变慢。我的问题是,如何更改该语句以帮助加快程序速度?
【问题讨论】:
-
试试
any(alllel1 == rownames(seqMat)) -
您可以在循环之前为所有等位基因调用一次
%in%,并将其输出(布尔向量)存储在循环内以供重复使用。 (假设你的循环遍历等位基因) -
您能提供更多信息吗?为什么会循环这么多次?是否有已检查的等位基因列表或 seqMat 是众多文件之一?
-
另外,下次使用
Rprof。比评论和取消评论要好得多。
标签: performance r optimization text