Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# ile Linked List: Node'lar, Sentinel ve Klasik Linked List Problemleri
Linked list, elinde tuttuğun node'u O(1)'de çıkarır ama her element için ayrı bir object öder: 100.000 int List'te 400 KB, LinkedList<int>'te 4,8 MB tutuyor ve node'lar bellekte dağınıkken 1 milyon elemanı gezmek List'ten 259 kat yavaş. Yazıda sentinel'li singly ve doubly linked list, in-place reverse, Floyd cycle detection, ortadaki node ve sıralı merge'ü xUnit testleriyle yazıyoruz.
C# ile Array ve Dynamic Array: Contiguous Bellek, Index Erişimi ve Kendi List'ini Yazmak
Dynamic array, dolunca iki katı büyüklükte yeni bir array'e taşınan bir array'dir; 1.000.000 Add toplamda yalnız 1.048.572 kopyalama yapar, yani element başına maliyet sabittir. Yazıda kendi DynamicArray<T>'imizi xUnit testleriyle yazıyor, silinen slot'u GC için temizlemenin nedenini ve 4.000×4.000'lik grid'i sütun sütun gezmenin satır satır gezmekten 3 kat yavaş olduğunu BenchmarkDotNet ile gösteriyoruz.