バッファつき入出力
こう書くと速いらしい。
import std.stream;
import std.cstream;
import std.conv;import std.date;
import std.process;void main(char[][] args) {
d_time starttime = getUTCtime();
long sum = 0L;
Stream istream = new BufferedFile(args[1]);
char[] line;
while(!istream.eof()) {
line = istream.readLine();
sum += toLong(line);
}
istream.close();
derr.writefln("%.3fs",
cast(double)(getUTCtime() - starttime) / TicksPerSecond);
dout.writefln("sum : %d", sum);
}
D : 20.234s
Perl : 2.750s
D(今回) : 0.765s
お、速くなったね。
こうすると7行が3行で書けるよ。
foreach(char[] line; new BufferedFile(args[1])) {
sum += toLong(line);
}
D : 20.234s
Perl : 2.750s
D(今回) : 0.765s
D(今回2) : 0.188s
ええっと、すごく速いね。
出力は次のよう。
import std.stream;
import std.cstream;import std.date;
import std.process;const int n = cast(int)1e6;
void main(char[][] args) {
d_time starttime = getUTCtime();
Stream ostream = new BufferedFile(args[1], FileMode.Out);
for(int i = 0; i < n; i++)
ostream.writefln("%d", i);
ostream.close();
derr.writefln("%.3fs",
cast(double)(getUTCtime() - starttime) / TicksPerSecond);
}
D : 24.516s
Perl : 1.313s
D(今回) : 0.938s