On 2017-11-30 17:13, Thiago Macieira wrote:
On quinta-feira, 30 de novembro de 2017 06:02:19 PST Marc Mutz wrote:
On 2017-10-10 14:49, Thiago Macieira wrote:
[...]

> * We think members are cleaner and we don't want to add these

You have members where members are possible.
But you can't add members to char16_t[]!

Why would we need to?
[...]
[1] e.g., at some point, we should make operator==(string-like,
string-like) templated and just call qCompareStrings. There's no reason
to hold this API from the user.

What's wrong with str.compare()?

Do these two quotes somehow fit together?

  template <StringLike LHS, StringLike RHS>
  bool operator==(const LHS &lhs, const RHS &rhs)
  { return qCompareStrings(lhs, rhs) == 0; }

  template <StringLike LHS, StringLike RHS>
  bool operator==(const LHS &lhs, const RHS &rhs)
  { return lhs.compare(rhs) == 0; }

  if (u"Hello" == string) ~~~


[2] incl., btw, the constexpr on QStringView(Char*), which is required
for std::string_view compat:
http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view

Pity. Performance is more important than constexpr.

1. There are so many more performance problems in Qt than this that it's almost funny :)

2. So ok, performance matters. But a flexible interface matters too. You might not use compile-time string manipulation, but people do. They write compile-time JSON parsers. Anyway, assuming you are right (and I don't think you are, here), where are your numbers that show that the frequency of calls to the QStringView(Char*) ctor multiplied with the performance increase of out-of-line SIMD code multiplied by the average length of strings is so large as to warrant dropping support for compile-time string manipulations and std compatibility? Show them, and then we'll discuss it again.

IMNSHO, absent proof to the contrary, you are optimizing an edge case here, an edge case that people can easily fix by using

   auto s = QStringView{s, qustrlen(s)};

manually when they expect large strings. The missing constexpr is not so easily obtained than the SIMD length calculation.


_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to