我最近編寫了一個動態程序,用於計算兩條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