当在 Dart 语言中使用 32 位整数在 32 位机器上工作时,我对性能如此巨大的差异感到有点沮丧。
这是否意味着 Dart VM 仍未针对整数运算进行优化?
这是我非常简单的测试。
void main() {
var tests = new List();
tests.add({"name" : "16-bit", "result" : 0});
tests.add({"name" : "32-bit", "result" : 0});
tests[0]["result"] = test1(0x8000);
tests[1]["result"] = test1(0x80000000);
int best;
for(var test in tests) {
var result = test["result"];
if(best == null) {
best = result;
} else if(best > result) {
best = result;
}
}
for(var test in tests) {
var result = test["result"];
var percent = (result / best * 100).round();
print("${test["name"]}: $percent%");
}
}
int test1(int value) {
int result = 0;
var count = 10000000;
var sw = new Stopwatch();
sw.start();
for(var i = 0; i < count; i++) {
var result = value + i;
}
sw.stop();
return sw.elapsedMicroseconds;
}
输出:
16-bit: 100%
32-bit: 13285%
这意味着在某些real
情况下性能可以慢130倍?