什么是Boilerplate代码,热门代码和热点?

我知道这些术语用于表现成就。 这一天我正在研究这个问题,并试图从互联网上了解这些,但没有得到任何能够在现实世界发展情景中清楚地呈现这些概念和存在这些问题/概念的例子。 有人可以彻底解释这些术语,示例场景,以及可能使用这些概念和术语的位置。

谢谢。

“Boilerplate”与性能无关:它只是指定义应用程序或使用某些框架所需的标准代码。 它的代码在每个应用程序中可能都是相同的。

另一方面,“热点”是指执行多次的代码的一部分,因此其性能对整体应用程序性能很重要。 通常情况下,一个热点是通过实际分析来识别的:如果它被执行多次,它不是一个热点,但它是如此微不足道,以至于它对性能的影响微乎其微。

Boilerplate代码

“热门代码”是可扩展的编写良好的代码

“热点”是一个激烈的活动领域。 它们是热点,因为它们经常被执行代码。

“热点”的一个定义是程序计数器花费大部分时间的代码区域。 相关术语是“瓶颈”,虽然定义不明确,但通常是指本地化为function,例程或方法的代码,其导致花费比所需更多的时间。

这两个术语都非常具有误导性,因为有一个巨大的不成文的假设。 假设没有机会加速不是热点或瓶颈的程序。 加速机会可能比这更加分散,如果没有找到并修复它们,它们就会成为性能限制器。

让我举个例子。 最近,当我在大约300行的C ++程序上工作时,我拍了十张叠画 ,因为我想知道如何加快速度。 其中四个stackshots看起来像这样:

CTypedPtrArray::operator[]() line 1555 + 23 bytes TcProcess() line 246 + 14 bytes ---> COperation* pOp = oplist[i]; CMhAck::Handler() line 165 doit() line 297 + 12 bytes main() line 318 CTypedPtrArray::operator[]() line 1555 + 23 bytes SchProcess() line 212 + 14 bytes ---> pJob = joblist[i]; COpAck::Handler() line 145 doit() line 297 + 12 bytes main() line 318 CTypedPtrArray::operator[]() line 1555 + 23 bytes TcProcess() line 249 + 18 bytes ---> pTask = pOp->tasks[pOp->iCurTask]; CMhAck::Handler() line 165 doit() line 297 + 12 bytes main() line 318 CTypedPtrArray::operator[]() line 1555 + 23 bytes COperation::~COperation() line 57 + 15 bytes ---> CTask* p = tasks[i]; COperation::`scalar deleting destructor'() + 37 bytes TcProcess() line 259 + 28 bytes CTskAck::Handler() line 193 doit() line 297 + 12 bytes main() line 318 

该计划整体耗时20秒。 这些堆栈示例告诉我的是大约40%的时间,或8秒,花在数组类的索引操作符上。 这告诉我如果我可以更直接地进行索引,而不是通过函数调用,我可以将运行时间从20秒减少到12秒。 加速将是20/12 = 1.67,或大约67%的加速。 (注意:在谈到计时时,我并没有给出“确切”的声音。我想要做的就是找到问题 。)

现在人们可能很容易不同意解决这个问题的方法,但你可以看到我如何发现问题的 ,对吧?

好吧,那么“热点”在哪里,哪里是“瓶颈”? 显然,索引操作符函数中存在一个热点,但问题出在哪里? (实际上甚至不是这样,因为它有三个不同的function。)这是否意味着我应该尝试让这个例程更快? 我甚至不拥有它!

是否存在某种“缓慢常规”forms的瓶颈? 没有! 没有特别的例程是缓慢的,或者是“糟糕的算法”。

我所做的是描述它正在做什么(“它在某些例程中索引。”),其中该描述适用于大部分时间。

对于这些事情,我能想出的最好的术语是“时间流失”,因为它花费了大量时间来完成那些不必完成的事情。

更多关于术语和流行的误解。

阅读定义: https : //en.wikipedia.org/wiki/Boilerplate_code
通过https://projectlombok.org/处理它