I was a little discouraged such a huge difference in performance when working on 32-bit machines with 32-bit integers in Dart language.
Is this means that Dart VM still not optimized for integer arithmetic?
Here is my pretty straightforward test.
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;
}
Output:
16-bit: 100%
32-bit: 13285%
This means that in some real
cases performance can be slower in 130 times?