http://ddili.org/forum/thread/1017 adresinde Salih hocamın yazmış olduğu kodlarda biraz değişiklik yaparak birşey denedim ama sistem hız konusunda sınıfta kalıyor malesef bu hız sorununu nasıl aşabiliriz?
import std.stdio;
import std.datetime;
int satir = 0;
int[string] variables;
interface Komut{
public:
void işlet();
}
class TekliKomut : Komut{
public:
void işlet(){
işlet_özel();
}
protected:
abstract void işlet_özel();
}
class defineVar : TekliKomut{
private:
string var;
int val;
public:
this(string var, int val){
this.var = var;
this.val = val;
}
protected:
override void işlet_özel(){
variables[var] = val;
}
}
class varInc : TekliKomut{
private:
string dosya;
public:
this(string dosya){
this.dosya = dosya;
}
protected:
override void işlet_özel(){
variables[dosya]+=1;
}
}
class jmp : TekliKomut{
private:
int dosya;
public:
this(int dosya){
this.dosya = dosya - 2;
}
protected:
override void işlet_özel(){
satir=dosya;
}
}
class eqJmp : TekliKomut{
private:
int addr;
int val;
string var;
public:
this(string var, int val,int addr){
this.var = var;
this.val = val;
this.addr = addr - 2;
}
protected:
override void işlet_özel(){
if(variables[var]==val) satir = addr;
}
}
void f(){
}
void main(){
Komut[] komutlar;
komutlar ~= new defineVar("i", 0);
komutlar ~= new varInc("i");
komutlar ~= new eqJmp("i", 10_000_000,10);
komutlar ~= new jmp(2);
auto a = Clock.currSystemTick().usecs();
while(satir<komutlar.length) {
komutlar[satir].işlet();
satir++;
}
auto b = Clock.currSystemTick().usecs();
writeln("i = ",variables["i"]);
writeln("--------------");
writeln("time: ",b-a);
while(1){}
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]