[Development] Feature Freeze Exception: QStringView

Philippe philwave at gmail.com
Tue Jan 31 15:24:18 CET 2017


For instance, a method such as:

QLabel::setText(...)

stores the passed argument somewhere. A malloc will be needed if
QStringView is the interface and a QString the passed argument.

Ok, this example is not a performance critical case.

I just want to highlight, that QStringView is not COW friendly. AFAIK.

Philippe

On Tue, 31 Jan 2017 14:09:06 +0000
Sergio Martins <sergio.martins at kdab.com> wrote:

> On 2017-01-31 12:50, Philippe wrote:
> > As far as I understand, I see a performance regression with
> > QStringView, for all the cases where copy-on-write can't take place
> > any longer.
> > In the following code, an extra malloc is needed. Or am I wrong?
> > > void bar()
> > {
> > 	QString s("hello");
> > 	foo(s)
> > }
> > > void foo(QStringView sv)
> > {
> > 	QString str(sv);	// malloc needed
> > }
> > > void foo2(const QString& s)
> > {
> > 	QString str(s);	// faster because of COW
> > }
> 
> Hi Philippe,
> 
> What will you do with str ?
> If you do write operations it will detach, so the COW argument doesn't apply.
> If you only do read operations then you don't even need the QString.
> In fact the first malloc isn't even needed, since you could just do foo("hello") if I understand correctly.
> 
> 
> Regards,
> -- SĂ©rgio Martins | sergio.martins at kdab.com | Senior Software Engineer
> Klarälvdalens Datakonsult AB, a KDAB Group company
> Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> KDAB - The Qt, C++ and OpenGL Experts





More information about the Development mailing list