[Development] HEADS-UP: QStringLiteral

Thiago Macieira thiago.macieira at intel.com
Thu Aug 22 17:16:08 CEST 2019

On Thursday, 22 August 2019 05:49:19 PDT Edward Welbourne wrote:
> The complication is that, unless you have a *very* liberal meaning of "a
> few", that's not the choice you're faced with.  Converting from UTF-8
> sure looks a lot more expensive (from what I've seen of the code) than
> converting from ISO-Latin-1.

It is, but our code is smart. It tries to first do a full SIMD decode of the 
content as if it were US-ASCII and then checks if there's anything non-ASCII 
there. So for UTF-8 input that is *also* US-ASCII, the performance of our 
fromUtf8 should be within 5% of the fromLatin1 performance.

This is implemented for both x86 and AArch64. (Performance numbers for AArch64 
may be different)

> OTOH, if we could bear the heavy burden of using u"..." for strings
> where we care about speed more than size, u8"..." for those where the
> content isn't pure ASCII but we care about size more than speed, and
> accept only ever using plain old C "..."  when its contents are pure
> ASCII, I think we can realistically hope to achieve some significant
> simplifications.

We need to make an assessment of what the C++20 changes mean for u8"" first, 
since it changes from char[] literal to char8_t[] literal. Adding the 
overloads to QString is easy, but we may have places that take a const char*, 
put it in a variable, then pass to a QString. Those will need updating.

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products

More information about the Development mailing list