在设计C ++类时,假设我有以下两个选项:
选项1:一个带有长参数列表的方法,该方法执行多个任务 选项2:每个任务的单独方法(每个方法都有较小的参数列表)。
显然,通常情况下,选项2更可取,因为它可以生成更清晰的代码。但是,如果这些方法的唯一目的是成为"帮助者"对于其他方法,那么在选项2的情况下,我将不得不承担多个函数调用的开销,而选项1将只有一个函数调用。
假设的性能增益(由于函数调用较少)是否可以证明在这种(极端)情况下选择选项1?
答案 0 :(得分:3)
假设性能增益(由于函数调用较少)是否可以证明在这种(极端)情况下选择选项1?
IMO,这里的性能提升可忽略不计,不会牺牲代码的可维护性,特别是在企业应用程序中,其中具有大型参数列表和大量代码行的函数难以修改/调试。这些函数必须分解为多个较小的函数,其中每个函数执行定义明确的步骤,这是较大任务的一部分。
答案 1 :(得分:0)
你的工作就是写好,干净,有效的代码。编译器的工作就是提高效率。显然,它做得比你做的好多了。
所以,是的,总是选择第二种选择。如果你想要效率,写清楚,让编译器做它的工作。 (顺便说一句,您可以使用-O3标志进行编译,以进一步增加优化)
答案 2 :(得分:0)
赋予一个实体一致的责任 是Alexandrescu的C ++编码标准第5条的标题。
在我看来,你将失去清晰度,增加维护成本,并有更大的机会在“全部”场景中引入错误。
测量单独函数调用的性能与在每次调用时必须在内部执行代码路径逻辑的函数可能是明智的。