虽然workers
可以带来运行时的好处,this answer表明它也可以加快编译速度。 This fellow同意。
为什么?
答案 0 :(得分:0)
这里有很多问题,因为您在运行时和编译期间比较emplace
,push_back
和construction
。我们先来编译。
编译涉及将源代码翻译成汇编指令。在发出任何汇编指令之前,通常有两个阶段:lexing和parsing。 lexing正在检查语法,解析是检查和处理语义(同样,这是非常简化的)。
鉴于这两个陈述:
my_vector.push_back(value);
my_vector.emplace(value);
扫描,解析和评估所需的工作应该几乎相同。因此,编译时间不应有任何差异。
此外,考虑到大多数编译器的处理速度,如果编译时间存在差异,则与启动编译器和执行I / O 的时间相比,它可以忽略不计。充其量,我希望节省一毫秒。如果你有超过1000个,你可以节省一秒的编译时间。人类对编译器完成的反应时间超过1秒。因此节省的费用仍然可以忽略不计或不值得。
就运行时而言,您需要进行分析。我们假设emplace
比push_back
快1 ms。您需要执行超过1000个emplace
函数才能获得1秒(如果您的程序持续运行且未中断)。您需要执行超过60000才能节省一分钟。等待I / O或其他任务完成后,所有这些节省可能会丢失。更有可能的是,您将节省纳秒,而不是毫秒。
将精力集中在正确而强大的代码上。只有在程序正确并且没有错误且没有崩溃之后才会担心优化。只有在用户说它慢,它没有满足关键时序事件或者它不适合内存时才进行优化。想想在考虑这种微优化时你可以编写多少代码。