【发布时间】:2013-12-29 04:25:40
【问题描述】:
我有以下两段 C# 和 D 代码,目的是在一个简单的循环中比较速度。
D:
import std.stdio;
import std.datetime;
void main() {
StopWatch timer;
long summer = 0;
timer.start();
for (long i = 0; i < 10000000000; i++){
summer++;
}
timer.stop();
long interval_t = timer.peek().msecs;
writeln(interval_t);
}
输出:大约 30 秒
C#:
using System;
using System.Diagnostics;
class Program{
static void Main(){
Stopwatch timer = new Stopwatch();
timer.Start();
long summer = 0;
for(long i = 0; i < 10000000000; i++){
summer++;
}
timer.Stop();
Console.WriteLine(timer.ElapsedMilliseconds);
}
}
输出:大约 8 秒
为什么 C# 代码这么快?
【问题讨论】:
-
@MarcinJuraszek 另一个简单的问题。您阅读问题的标题了吗?
-
他想问的本质是:“你在运行D编译器的时候启用了优化吗?”
-
令人惊讶的是,您在循环之后没有对 Summer 变量执行任何操作,但 C# 却需要 8 秒,不确定为什么它不能消除整个操作。
-
如果您还没有启用优化,请尝试在 DMD 中启用优化。
-O -inline -release -noboundscheck. -
在 D 编译器上启用优化也会将结果更改为大约 7 秒。感谢您的回答,我没想到差异如此之大。
标签: c# performance benchmarking d