import std.stdio;
import std.datetime;
import std.range;
import std.conv;
import std.string;
//import std.regex;
//import core.thread; //Thread.sleep(dur!("seconds")(1));
const SEC_CONV = 0.0000001;
const MAX_RANGE = 1000000;
__gshared string[int] table;
shared static this()
{
foreach (i; 0 .. MAX_RANGE)
table[i] = to!string(i);
}
long print_start(string s)
{
write(format(s, MAX_RANGE));
stdout.flush();
return Clock.currStdTime();
}
void print_end(long start)
{
writef("%.3fs\n", (Clock.currStdTime() - start) * SEC_CONV);
}
void test_dict()
{
//[2012-04-05] set 2.251s get 1.957s clear 0.000s
long start;
string[string] d;
string s;
write("---- test_dict -----\n");
start = print_start("test dict set (%d)...\t");
for (int i = 0; i < MAX_RANGE; i++)
{
//~ s = to!string(i);
s = hash[i];;
d[s] = s;
}
print_end(start);
start = print_start("test dict get (%d)...\t");
for (int i = 0; i < MAX_RANGE; i++)
{
s = d[hash[i]];
}
print_end(start);
start = print_start("test dict clear (%d)...\t");
d.clear();
print_end(start);
}
void test_list()
{
//[2012-04-05] set 0.085s get 0.007s each 0.014s
long start;
long j;
long[] l;
write("---- test_list -----\n");
start = print_start("test list set (%d)...\t");
for (int i = 0; i < MAX_RANGE; i++)
{
l ~= i;
}
print_end(start);
start = print_start("test list get (%d)...\t");
for (int i = 0; i < MAX_RANGE; i++)
{
j = l[i];
}
print_end(start);
start = print_start("test list each (%d)...\t");
for (int i = 0; i < l.length; i++)
{
j = l[i];
}
print_end(start);
}
void test_str()
{
//[2012-04-05] find 1.254s replace 1.870s
long start;
long j;
const s = "1143534=69789+35435^(100&10+5)";
const rep_before = "35";
const rep_after = "3535";
string ss;
write("---- test_str -----\n");
start = print_start("test str find (%d)...\t");
for (int i = 0; i < MAX_RANGE; i++)
{
j = s.indexOf(hash[i]);
}
print_end(start);
start = print_start("test str replace (%d)...\t");
for (int i = 0; i < MAX_RANGE / 2; i++)
{
ss = s.replace(rep_before, rep_after);
ss = ss.replace(rep_after, rep_before);
}
print_end(start);
}
void main()
{
test_dict();
test_list();
test_str();
}