[Issue 14256] Poor IO performance on 64-bit dmd 2.066 (OS X)
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sun Jun 25 05:04:00 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=14256
Ivan Kazmenko <gassa at mail.ru> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|WORKSFORME |---
--- Comment #11 from Ivan Kazmenko <gassa at mail.ru> ---
I've just checked with a more recent version (dmd 2.074.1), and the picture is
the same as two years ago here (Win64, file is on SSD), so reopened.
In the readln program, I allocated buffer of 1100000 bytes (the posted version
had 10000, and so failed on test 3).
The current table:
Entry test1 test2 test3
Number of lines 1000000 10000 100
Length of each line 100 10000 1000000
------------------------------------------------------------------------
Python 2.7.5 x32: 0.68 0.44 0.36
Python 2.7.10 x64: 0.55 0.36 0.33
DMD 2.074.1 byLine -m32: 0.27 0.73 1.05
DMD 2.074.1 byLine -m64: 1.45 1.31 1.43
DMD 2.074.1 readln -m32: 0.25 0.63 1.00
DMD 2.074.1 readln -m64: 1.55 1.54 1.46
DMD 2.074.1 read+splitLines -m32: 0.35 0.39 0.31
DMD 2.074.1 read+splitLines -m64: 0.41 0.31 0.32
The times of 1 second or above are clearly problematic.
In Python, string storage is low-level but number of lines affects the Pythonic
part, so test1 is slower.
In D -m32, the byLine and readln versions are slower when the length of lines
grows, possibly due to reallocation when constructing a string. I'd say 3x
slower than Python on large strings feels like too much.
In D -m64, the byLine and readln versions still take 1.3+ seconds on all tests,
more than 2x slower than Python, which is sad.
As earlier, the read+splitLines version is the fastest on all tests in both
-m32 and -m64, so speed is definitely possible, just not as out-of-the-box as
the other two versions.
Ivan Kazmenko.
--
More information about the Digitalmars-d-bugs
mailing list