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;
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);
d[s] = s;
}
print_end(start);
start = print_start("test dict get (%d)...\t");
for (int i=0; i<MAX_RANGE; i++){
s = d[to!string(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(to!string(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();
}