Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Dilim Eniyileştirmesi

Konu, 'D Dili' kısmında Salih Dinçer tarafından paylaşıldı.

  1. Salih Dinçer

    Salih Dinçer Üye

    Kayıt:
    24 Şubat 2012
    Mesajlar:
    53
    Beğenilen Mesajlar:
    0
    Aşağıdaki dilim örneğini eniyileştirmemiz (opimization) mümkün mü? Yaptığı kısaca şu:
    • Sondaki 3 elemanı dizi sonuna ekle
    • Soldaki 3 elamanı dizi sonundan çıkar
    Kod:
    import std.stdio;
    
    void main()
    {
        int offset = 3;
        int[] test;
     
        foreach(i; 0..10) test ~= i;
        test.writeln;
        
        foreach(i; 0..3)
        {
          test ~= test[$-offset..$];
          test = test[offset..$];
          test.writeln;
        }
    }/*Çıktısı:
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
    [6, 7, 8, 9, 7, 8, 9, 7, 8, 9]
    [9, 7, 8, 9, 7, 8, 9, 7, 8, 9]
    */
     
  2. Salih Dinçer

    Salih Dinçer Üye

    Kayıt:
    24 Şubat 2012
    Mesajlar:
    53
    Beğenilen Mesajlar:
    0
    Sanırım şöyle, kendin pişir kendin ye...:)
     
  3. acehreli

    acehreli Ali Çehreli

    Kayıt:
    19 Ekim 2002
    Mesajlar:
    4,973
    Beğenilen Mesajlar:
    2
    ~= işlecini kullanan bana daha hafif geliyor çünkü yalnızca test'in sonuna ekliyor. Orada yer varsa yalnızca üç eleman yazılır. ~ işlecini kullanan ise en azından kavramsal olarak yepyeni bir dizi üretmek zorundadır. Eğer derleyici eniyileştirme uygulamazsa bence ~= yönteminden daha yavaştır. Denemek gerek... ;)

    Ali