无法减少代码(将cout与退出组合)

无法减少代码(将cout与退出组合)

问题描述:

我只允许在程序中插入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

您需要明白语句数量与代码效率之间没有明显关系。这是因为,例如,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

你可以让这一切变成一行用逗号:

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

不知道这被视为作弊。您尚未指定规则的准确内容。