On Tuesday, 19 July 2016 at 16:13:21 UTC, Atila Neves wrote:
On Tuesday, 19 July 2016 at 16:01:01 UTC, Lodovico Giaretta
wrote:
On Tuesday, 19 July 2016 at 15:48:26 UTC, Atila Neves wrote:
Small string optimization should _help_ std::string, no?
Atila
Small string optimization will make the struct bigger, thus
making swapping slower. If the struct is no bigger than 2
pointers, swapping it is ultra fast.
Interesting. Read up on it and tried changing the strings to be
~50 chars long. C++/std::string gets better, but C++/const
char* still beats D by a small margin:
C: 1.852s
C++/std::string: 1.489s
C++/const char*: 1.034s
D: 1.188s
Could be the cost of swapping the "fat" in "fat pointer", in
which case: worth it.
You are swapping different amount of data.
For C++/const char* vs D, you are swapping 75% more data.
For D vs C++/std::string, you are swsapping 129% more data.
I would expect you getting the same numbers if you did
"const(char)*" version in D?
And if you used a inline sort[1] in the C version it would
probably be just as fast as the C++/const char* version.
Also it was a bit hard to find out what N you where using.
Cheers, Jakob.
[1] http://www.corpit.ru/mjt/qsort.html