Ton*_*ion 10 c++ performance definitions
我目前正在阅读Bjarne Stroustrup撰写的"The C++ Programming Language:Special Edition"和第133页,其中说明如下:
对于用户定义的类型,将变量的定义推迟到合适的初始化程序可用之后,也可以获得更好的性能.例如:
Run Code Online (Sandbox Code Playgroud)string s; /* .... */ s = "The best is the enemy of the good.";很容易慢得多
Run Code Online (Sandbox Code Playgroud)string s = "Voltaire";
我知道状态很容易,这意味着它不一定是这样,但是我们只是说它确实发生了.
为什么这会带来潜在的性能提升?
难道只有这样与用户定义类型(甚至STL型)或者是这也与案件int,float等等?
我会说这主要是关于具有非平凡默认构造函数的类型,至少就性能而言.
两种方法的区别在于:
当然,事先告诉我们这会产生多大的性能差异真的很难.
执行默认构造函数需要时间.覆盖它在随后调用的赋值运算符中初始化字符串的内容也需要时间.
当函数(由于return语句或异常)在默认构造函数和赋值运算符的调用之间留下时,执行可能永远不会到达赋值.在这种情况下,对象被不必要地默认初始化.
实现可能会浪费性能以确保在抛出异常时调用对象的析构函数.如果在后续范围内初始化对象,则从未达到该范围,也不需要.