February 26, 2013

Alıntı:

>

İstersen malloc() olayına sonraya bırakalım. Sonuçta bizim için güvenli bellek tahsisi öncelikli. Hız zaten bir şekilde gelecek inşaallah. Ama güvenden ödün verirsek bu sefer hızın hiç bir esprisi kalmayacak...

Tamam :) nasıl uygun görürseniz :)
Alıntı:

>

en azından iki sayıyı çarpmayı yapmalıyız

Toplama, çıkarma, bölme işlemleri de var sistemde sadece test kısmına eklemedim. Çünkü 4 işlem de aynı kapıya çıkıyor.

               case TEST.operand_times://46959 ms
                   list~=op(LOAD, 0, 20);
                   list~=op(LOAD, 0, 50);//bunu LOAD, 1, 50 yapın :) unuttuğum başka bir şey
<?php
$a = microtime();
for($i=0; $i<1000000; $i++){
}
$b = microtime();
echo $b-$a;
?>

PHP de bu kodun çıktısı ile rhs deki aMillionLoop aynı görevi görüyor. Sadece 1 milyon döngü yapılırkenki hız karşılaştırması bu.

Alıntı:

>

Dip Not: Eve yeni geldim, biraz uyuyabilirsem gece kalkıp bahsettiğim interpret.d modülü üzerine çalışacağım.

Tamam size iyi uykular :)

Bu arada belki faydası olur https://github.com/mruby/mruby/tree/master/src
mrubynin neyi nasıl yaptığından fayadalanabiliriz belki de :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 26, 2013

Salih hocam sanırım hafızaya veri yazma sorununa kalıcı bir çözüm buldum :)

this(int val){
//this.val = cast(int*) core.stdc.stdlib.malloc(int.sizeof);
//*cast(int*) this.val = val;
void*[val.sizeof] ps2;
*ps2 = cast(void*) val;
this.typ = DT.INT;
}

Bu şekilde yapıp çalıştırdığımda inanılmaz bir sonuç çıktı :) 19 bin :) Önceki sonuç 47bin idi.

Not: operand_times çalıştırılıyor

Not 2: Kod hatalı yanlış alarm :) (Sabah okula gitmeden önce alelacele yapınca testi yanlış yapmışım)
Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Testleri şöyle yapabiliriz, tabi Ali hocam da katılırsa ne güzel olurdu...

Bir yenileme veya güncelleme yayınladığımızda bunu haber veririz. Tabi kendimiz bir kaç defa denedikten sonra. Zaten GitHub'dan tek komut ile çekilip derlenebilen bir şey. Belki bir make file oluşturmamız da hız kazandıracaktır.

Özetle; herkes, önceki sonucu bir kenara not eder ve yenisinde daha iyi bir sonuç elde edilyse bunu haber veririr.

Ne dersiniz?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Harika olur. Ali hocam da uygun görürse projeler kategorisi içerisinde Rhodeus Script diye bir forum açalım oradan yaparız.

Bu arada değişken depolamak için türsüz bir alana ihtiyacımız var bence. Her işlev türünü bildiği için cast işlemi yapar ve sorun hallolmuş olur :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Evetttt...:)

Biz bunu hala Ali hocamdan niye istemiyoruz! Projeler bölümünde bir kategori açma zamanı geldi de çoktaaaan geçiyor...

Değişken depolama konusunda benim bazı çalışmalarım var. Belki bunları kullanmak isterseni. Örneğin universal type

Bu arada aklıma gelmişken; zaman zaman, bazı kullanılmayan ve/veya gerekli olmayan değişkenler görüyorum. Örneğin şu an çalıştığım işlevde sadece tek bir yerde (op_is_equal etiketinde) arttırılmış olan boolptr bir işe yarayacak mı?

	void interpret(Token[] tokens){/*
		bool[] booldizi = new bool[](2_000_000);
		bool* boolptr = &booldizi[0];//*/

		var[] registers = new var[100];
		var* register = &registers[0];

Son olarak yukarıdaki registers normalde şu şekilde kullanılmış:
Alıntı:

>
> 		var[100] registers = new var[100];
> ```

>
Eşitliğin her iki tarafına da 100 yazmanın gereği var mı?

Kolay gelsin...

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
February 27, 2013

Alıntı:

>

Değişken depolama konusunda benim bazı çalışmalarım var. Belki bunları kullanmak isterseni. Örneğin universal type

Nerede? Görebilir miyim?

Alıntı:

>

Bu arada aklıma gelmişken; zaman zaman, bazı kullanılmayan ve/veya gerekli olmayan değişkenler görüyorum. Örneğin şu an çalıştığım işlevde sadece tek bir yerde (op_is_equal etiketinde) arttırılmış olan boolptr bir işe yarayacak mı?

Değişkenin silinmemesi için diziye yazıyorum diziye yazma işlemini de ptr arttırarak yaptım (bu kullanım yanlış sadece değişken sorununa geçici bir çözüm ürettim) :). Şu an onu kaldırmak için uğraşıyorum ama henüz başaramadım :). Başka gereksiz ne var veya olan bir şeye alternatif olarak ne yapabiliriz?

Alıntı:

>

Eşitliğin her iki tarafına da 100 yazmanın gereği var mı?

Hiçbir fikrim yok :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Alıntı (zekeriyadurmus):

>

Alıntı (Salih Dinçer):

>

Değişken depolama konusunda benim bazı çalışmalarım var. Belki bunları kullanmak isterseni. Örneğin universal type

Nerede? Görebilir miyim?

Bu konuda forumda, aynı isimde bir başlık açmıştım. Ancak senin için kütüphanemdeki iki modülü GitHub'a yükledim. Hatta bir hatası (a) vardı onu da bu vesileyle giderdim: https://github.com/salihdb/sdb

Test etmek için de şu kodu kullanabilirsin:

import std.stdio,
      sdb.container,
      sdb.stacks;

/* Compile parameters:
* dmd boolstack sdb\container sdb\stacks -release
*/
void main() {
   auto test = new BoolStack!ubyte(2);

   with(test) {
       push(false);
       push(true);

       writeln(test);
       writeln("Stack Size Units: ", size);
       writeln("Total Reserved Bytes: ", length);

       "Fetching...".write;
       while(!empty) {
           write(test.pop);
       }
       writeln("\nStack Size Units: ", size);
   }

   //auto Deneme = Tx(ushort.max);/*
   Tx Deneme = 2;//*/
      Deneme.writeln(": ", Deneme.tür);

   int sayı = Deneme.to!int;
       sayı++;
       sayı.writeln(": ", typeid(sayı));
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Hocam biraz inceledim gayet güzel yalnız bir sorum var.

Türden bağımsız olacak şekilde olamaz mı?

Şu anki sisteme uyarlamaya çalıştım ama beceremedim bir türlü :(

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Türden bağımsız derken neyi kasettiğini anlamadım?

Ama, an itibariyle en büyük tür olduğu için ulong'u tercih ettim ve bunu diğer veri türlerinde parçalara (-bknz. union) böldüm. Her ne kadar kendi projemde ihtiyaç duymasam da dış dünya ile yapıdan bağımsız haberleşebilmesi için de bir to() işlevi ekledim. Dilersen union ve range gibi özelliklere ihtiyaç duymadan da özelleştirebilirsin.

Aslında yukarıda verdiğim örnek gerçek gücünü göstermiyor. Bu yapıyı Tx[] şeklinde kurarak aynı dizide farklı veri türlerini taşıyabilirsin. Bu benim hayalimde olan ve yapmak istediğim basit bir şeydi. Bunun daha da ötesi olabilir ki std\variant diye bir modülümüz hali hazırda var. Eminim bütün bunlardan daha iyilerini yapabileceğimiz fikirler de çıkacaktır.

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 27, 2013

Alıntı:

>

Bu yapıyı Tx[] şeklinde kurarak...

İşte bunu bir türlü yapamadım :)

Alıntı:

>

Türden bağımsız derken neyi kasettiğini anlamadım?

new BoolStack!ubyte(2);

bu stacka string atamıyorum :(
Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]