无法减少代码(将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)语句和退出(返回)语句到一个语句中。
任何帮助将不胜感激。
谢谢
您需要明白语句数量与代码效率之间没有明显关系。这是因为,例如,cout<<x;
声明不是您的处理器的单个指令。处理器必须执行数百甚至数千条指令才能实现该声明的目标。此外,还有一些陈述,如a = b + c;
被翻译成2-3条指令。
因此,通过减少语句数量,您不会优化代码。还有其他的优化方式,比如使用更高效的算法。
是的。正如你所说,我只是想减少线路的数量。 – user3256847 2014-12-05 19:13:00
为什么?这样做没有意义,因为您的代码可能会更难以阅读,并且可能效率更低。 – Paul92 2014-12-05 19:14:00
我认为这个行数的要求不是代码效率,而是一些外部施加的限制(可能是作业分配) – Daniel 2014-12-05 19:15:22
你可以让这一切变成一行用逗号:
如果opr[x1].asap_value = my_cycle + 2, update_slack(), update_matrix(opr[x1].opid, 0);
不知道这被视为作弊。您尚未指定规则的准确内容。
什么构成一条线?你可以把它全部写在一行上。 – Daniel 2014-12-05 19:03:53
是代码或可执行文件的大小或数据大小的限制行吗? – 2014-12-05 19:07:50
我不是在寻找一般的优化。只需减少行数。每条线都是这样,直到分号。 – user3256847 2014-12-05 19:12:30