Major performance problem with std.array.front()

Vladimir Panteleev vladimir at thecybershadow.net
Fri Mar 7 12:43:44 PST 2014


On Friday, 7 March 2014 at 19:57:38 UTC, Andrei Alexandrescu 
wrote:
> Allow me to enumerate the functions of std.algorithm and how 
> they work today and how they'd work with the proposed change. 
> Let s be a variable of some string type.

> s.canFind('é') currently works as expected.

No, it doesn't.

import std.algorithm;

void main()
{
     auto s = "cassé";
     assert(s.canFind('é'));
}

That's the whole problem - all this hot steam and it still does 
not work properly. Because it can't - not without pulling in all 
of the Unicode algorithms implicitly, and that would be much 
worse.

> I went down std.algorithm in the order listed in its 
> documentation and found pernicious issues with almost every 
> single algorithm.

All of your examples are variations of one and the same case: 
searching for a non-ASCII dchar or dchar literal.

How often does this pattern occur in real programs? I think the 
only real metric is to try the change and find out.

> Clearly one might argue that their app has no business dealing 
> with diacriticals or Asian characters. But that's the typical 
> provincial view that marred many languages' approach to UTF and 
> internationalization.

So is yours, if you think that making everything magically a 
dchar is going to solve all problems.

The TDPL example only showcases the problem. Yes, it works with 
Swedish. Now try it again with Sanskrit.


More information about the Digitalmars-d mailing list