10-09-2017 12:05 PM
LAbview bellek yönetiminde dikkat edilmesi gereken püf noktalardan bahsedebilir misiniz ?
--RAM de biriken gereksiz çöpleri (C# da garbage collector) silip ram i rahatlatacak birşey var mıdır ? Labview in işlemler sırasında oluşturduğu fazla kopyaları sonradan temizleyebilir miyiz ? Bu işlemi bir ram temizleyici yazılım ile yapabiliyorum. Ancak yazılımsal yapmak istiyorum.
--25 ile 40 tane array build array ile birleştirip 2d array yapıyorum. Bu iyi bir yöntem değil midir?
--Yazılım performansını artıracak her türlü öerinizi bekliyorum.
10-10-2017 02:18 AM
Labview "byVal" esasına dayanan bir geliştirme ortamı olduğu için bellek (değişken tanımı) kontrolü "run-time engine" tarafından otomatik yapılır. Bunun nasıl olduğu oldukça detaylıdır. Kısaca artık işi kalmayan bellek otomatik olarak boşaltılır. Yani kablo yada diğer veri paylaşımı (data propagation) yöntemleri ile kullanımı bitmiş olan veri bellekten silinir. Bunun bazı istisnaları vardır. Mesela resim tipi (imaq image) referans modeli ile işlem görür. Dolayısıyla başta bellek bölgesi ayırmak ve iş bitince boşaltmak sizin yapmanız gereken iştir. Yine benzer create/dispose ile oluşturulan referanslar da böyledir. Ayrıca .NET nesneleri, VI referansları da iş bitince kapatılmalıdır. Daha genel olanı ise dvr (data value reference) ile oluşturduğunuz her hangi bir tipin referansını da kendiniz kapatırsınız.
.NET nesnesi yada bahsettiğim türden referans kullanmıyorsanız bellek sorununuz muhtemelen dinamik olarak büyüyen dizilerden olabilir. Bunun önüne geçmek de oldukça basittir. Diziyi (tecrübe ve ihtiyaca bağlı olarak) kısıtlamalısınız. Dizi boyutu belli boyutun üzerindeyse eski değerleri silebilirsiniz. Bu değerler önemli ise diske kaydedersiniz.
Kodunuzda performans sorunları varsa paylaşırsanız incelemeye çalışırız.
* Disiplinli, düzenli bir kodlama için mimari ve nesne tabanlı programlama konusunda kendinizi geliştirmenizi öneririm.
10-10-2017 11:25 AM - edited 10-10-2017 11:32 AM
Herşeyi kendisi otomatik yapıyorsa aşağıdaki linkte neden bu kadar açıklama yapılıyor.
http://zone.ni.com/reference/en-XX/help/371361H-01/lvconcepts/vi_memory_usage/
Yazılım bilgimi test etmenizi veya değerlendirmenizi istemedim. İşime yarayan bir bilgi alamadım. Yine de teşekkür ederim.
10-10-2017 12:35 PM - edited 10-10-2017 12:48 PM
@srkanylmaz wrote:
...
Yazılım bilgimi test etmenizi veya değerlendirmenizi istemedim. İşime yarayan bir bilgi alamadım. Yine de teşekkür ederim.
... ?
Ne demek istediğinizi anlamadım. Bellek yönetimi konusunun run-time engine üzerinde nasıl değerlendirildiğinin oldukça detaylı bir konu olduğunu belirtmiştim. Paylaşmış olduğunuz sayfada benim çok kısa olarak anlattığım esaslara ters yada farklı ne var? İlk başlık altında tam olarak anlattığım şeyler ele alınmış. Altında da temel düzeyde dikkat edilecek hususlar verilmiş. Forumlarda ve diğer dokümanlarda bu konu ile ilgili daha pek çok şey var.
Yazılım bilginizi test ettiğim kanısına nereden kapıldınız? Üç cümleden oluşan bir soru sormuşsunuz. Sorunuzun açıklayıcılık düzeyine bakarak ancak bu kadar detaya girebildim. Zaten forumlar üzerinde belki saatler (günler) alacak bir konuyu ne kadar detaylı anlatabilirim. Eğer belli bir husus üzerine sormuş olsaydınız (yani bellek yönetimi ile ilgili bir husus üzerine) yada kodunuzun sıkıntılı olduğunu düşündüğünüz yerini paylaşmış olsaydınız sorun olabilecek nokta üzerinde daha faydalı olabilirdim.
Beni tanımıyorsunuz, en azından hüsn-ü zan ile değerlendirmenizi rica ederim. Ne sizi ne de herhangi birini hakir görmekle elime geçecek bir şey yok. Rabbim hepimize akl-ı selim versin. Yeterli yardımı yapamadıysam kusuruma bakmayın.
*Mimari ve nesne tabanlı programlama konusundaki tavsiyem aynı şekilde devam ediyor. Sanırım bu tavsiyem sizi rahatsız etti. Ancak bunu kendim için değil bu konuda kendini geliştirmek isteyen herkes için şiddetle tavsiye ediyorum. Zira 13 yıldır bu işin içindeyim ve sorabileceğim/öğrenebileceğim biri olmadığı için bocalayarak geçirdiğim belki 6-7 yılı başkaları da benim gibi heba etmesin. Başka bir maksadım yok...