June 08, 2015 Re: Utf8 to Utf32 cast cost | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozák | On Monday, 8 June 2015 at 11:44:47 UTC, Daniel Kozák wrote:
> No difference even with GC.disable() results are same.
Profile! Callgrind is your friend~
|
June 08, 2015 Re: Utf8 to Utf32 cast cost | ||||
---|---|---|---|---|
| ||||
Posted in reply to Anonymouse | On Mon, 08 Jun 2015 18:16:57 +0000 Anonymouse via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > On Monday, 8 June 2015 at 11:44:47 UTC, Daniel Kozák wrote: > > No difference even with GC.disable() results are same. > > Profile! Callgrind is your friend~ Yep, but I dont care, I am the one who makes transcode faster, so I am happy with results :P. P.S. I care and probably when I have some spare time I will improve to!dstring too |
June 08, 2015 Re: Utf8 to Utf32 cast cost | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | On Monday, 8 June 2015 at 18:48:17 UTC, Daniel Kozak wrote:
> Yep, but I dont care, I am the one who makes transcode faster, so I am happy
> with results :P.
>
> P.S. I care and probably when I have some spare time I will
> improve to!dstring too
Ah, so you are. I confused you with Kadir Erdem Demir.
|
June 10, 2015 Re: Utf8 to Utf32 cast cost | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | Am Mon, 08 Jun 2015 11:13:25 +0000 schrieb "Daniel Kozak" <kozzi11@gmail.com>: > BTW on ldc(ldc -O3 -singleobj -release -boundscheck=off) transcode is the fastest: > > f0 time: 1 sec, 115 ms, 48 μs, and 7 hnsecs // to!dstring > f1 time: 449 ms and 329 μs // toUTF32 > f2 time: 272 ms, 969 μs, and 1 hnsec // transcode Three functions, each twice as fast and twice as hidden as the one before. :) -- Marco |
June 10, 2015 Re: Utf8 to Utf32 cast cost | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozák | Am Mon, 8 Jun 2015 12:59:31 +0200 schrieb Daniel Kozák via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>: > > On Mon, 08 Jun 2015 10:41:59 +0000 > Kadir Erdem Demir via Digitalmars-d-learn > <digitalmars-d-learn@puremagic.com> wrote: > > > I want to use my char array with awesome, cool std.algorithm functions. Since many of this algorithms requires like slicing etc.. I prefer to create my string with Utf32 chars. But by default all strings literals are Utf8 for performance. > > > > With my current knowledge I use to!dhar to convert Utf8[](or char[]) to Utf32[](or dchar[]) > > > > dchar[] range = to!dchar("erdem".dup) > > > > How costly is this? > > import std.conv; > import std.utf; > import std.datetime; > import std.stdio; > > void f0() { > string somestr = "some not so long utf8 string forbenchmarking"; > dstring str = to!dstring(somestr); > } > > > void f1() { > string somestr = "some not so long utf8 string forbenchmarking"; > dstring str = toUTF32(somestr); > } > > void main() { > auto r = benchmark!(f0,f1)(1_000_000); > auto f0Result = to!Duration(r[0]); > auto f1Result = to!Duration(r[1]); > writeln("f0 time: ",f0Result); > writeln("f1 time: ",f1Result); > } > > > /// output /// > f0 time: 2 secs, 281 ms, 933 μs, and 8 hnsecs > f1 time: 600 ms, 979 μs, and 8 hnsecs > Please have the result of the transcode influence the program output. E.g. Add the first character of the UTF32 string to some global variable and print it out. At the moment - at least in theory - you allow the compiler to deduce f0/f1 as pure, return-nothing functions and you will benchmark anything from your written code to an empty loop. I'm talking out of experience here: https://github.com/mleise/fast/blob/master/source/fast/internal.d#L99 -- Marco |
Copyright © 1999-2021 by the D Language Foundation