2014-12-05 56 views
-1

我只允許在程序中插入10行(嚴格)代碼。我已經優化編程到一個簡潔的。我已經發布了下面的代碼。無法減少代碼(將cout與退出組合)

if (std::find(outvar.begin(), outvar.end(), line[x].tokens[0]) == outvar.end() ||    (std::find(inputs.begin(), inputs.end(), line[x].tokens[4]) == inputs.end()) 
{ 
cerr << "Undefined variable " << endl; 
exit(1); 
} 


if (opr[x].type == "MUL" && opr[x1].asap_value == my_cycle + 1) 
{ 
opr[x1].asap_value = my_cycle + 2; 
update_slack(); 
update_matrix(opr[x1].opid, 0); 
} 


if (latency < (opr[p2].asap_value + opr[p2].latency_op - 1) || opr[p2].asap_value == 0) 
{ 
cerr << "Latency value is too less for this circuit \n"; return -1; 
} 

這就需要10行,我還有2個必須添加的強制性代碼行。我無法進一步減少它。基本上我期待結合err(cout)語句和退出(返回)語句到一個語句中。

任何幫助將不勝感激。

謝謝

+2

什麼構成一條線?你可以把它全部寫在一行上。 – Daniel 2014-12-05 19:03:53

+0

是代碼或可執行文件的大小或數據大小的限制行嗎? – 2014-12-05 19:07:50

+0

我不是在尋找一般的優化。只需減少行數。每條線都是這樣,直到分號。 – user3256847 2014-12-05 19:12:30

回答

0

您需要明白語句數量與代碼效率之間沒有明顯關係。這是因爲,例如,cout<<x;聲明不是您的處理器的單個指令。處理器必須執行數百甚至數千條指令才能實現該聲明的目標。此外,還有一些陳述,如a = b + c;被翻譯成2-3條指令。

因此,通過減少語句數量,您不會優化代碼。還有其他的優化方式,比如使用更高效的算法。

+0

是的。正如你所說,我只是想減少線路的數量。 – user3256847 2014-12-05 19:13:00

+0

爲什麼?這樣做沒有意義,因爲您的代碼可能會更難以閱讀,並且可能效率更低。 – Paul92 2014-12-05 19:14:00

+0

我認爲這個行數的要求不是代碼效率,而是一些外部施加的限制(可能是作業分配) – Daniel 2014-12-05 19:15:22

1

你可以讓這一切變成一行用逗號:

如果
opr[x1].asap_value = my_cycle + 2, update_slack(), update_matrix(opr[x1].opid, 0); 

不知道這被視爲作弊。您尚未指定規則的準確內容。