A while ago I was measuring performance of string comparison in .NET. Today I played with string type in D programming language and decided to make similar tests.
D is relatively new language with some good perspectives (by the way Andrei Alexandrescu is engaged in D development).
Here is relatively simple code, that I have used to make the tests:
import std.string;
import std.date;
import std.stdio;
string cmp1 = "SomeString";
string cmp2 = "Someotherstring";
auto iters = 100000;
void test_f()
{
for(int i = 0; i < iters; i++) { auto res = icmp(cmp1, cmp2); }
}
void test_equal()
{
for(int i = 0; i < iters; i++) { auto res = cmp1 == cmp2; }
}
void main()
{
ulong[] results;
int mean1 = 0;
int mean2 = 0;
for(int i = 0; i < 5; i++)
{
results = benchmark!(test_f, test_equal)(1, results);
mean1 += results[0];
mean2 += results[1];
writefln("Test_f: %d", results[0]);
writefln("Test_equal: %d", results[1]);
}
mean1 = mean1 / 5;
mean2 = mean2 / 5;
writefln("Mean Test_f: %d", mean1);
writefln("Mean Test_equal %d", mean2);
}Test results where interesting:Test_f: 21 Test_equal: 2 Test_f: 21 Test_equal: 2 Test_f: 22 Test_equal: 2 Test_f: 14 Test_equal: 1 Test_f: 12 Test_equal: 1 Mean Test_f: 18 Mean Test_equal 118 millis for 100000 iterations looks pretty nice. It is faster then .NET string case insensitive ordinal string comparison. If you remember: .NET version completed in about 26 milliseconds. Second test function just compares two values for equality, I assume that mere pointer compare is made.
I have decided to give this relatively new language a try, it is highly possible that there will be more posts about D in this blog :).

