我最近编写了一个动态程序,用于计算两条DNA链(可能很长)之间的相似性(修改的编辑距离)。潜在的长循环并在里面声明变量
我的代码等(因为它的分配不实际的代码):
while(!file.eof){
string line;
int sizeY, sizeX;
//get first strand
getline(db, line)
//second strand
getline(db, line)
double ** ary = new double[sizeY];
//loop to initialize array
for(i to sizeY)
{
for(i to sizex)
{
pair<string,string> p,d;
p.first = "A";
p.second = "T";
d.first = "G";
d.second = "C";
//do some comparisons
}
}
}
上面的代码将需要约40分钟来完成与〜2400行的文件。 如果我移动嵌套for循环外的p,d和赋值对并运行完全相同的文件,它将在大约1分钟内完成。
我读过其他线程的表现几乎相同。我也用-O2编译了它。
为什么上面的代码慢得多?
这是什么语言?如果你不用一种语言标记它,它可能不会获得很多观点 – 2011-06-02 01:34:51
它似乎比任何东西,但它的缺失C++更多;并不会编译。循环是伪代码虽然:) – 2011-06-02 01:38:04
你为什么使用字符串?好像你想要一对字符。这将摆脱大部分uesp指出的问题。 – Michael 2011-06-02 02:41:29