Merhaba, Bilgisayarımın kaynaklarını (cpu, ram, hard disk) kullanacak, anlamlı olması gerekmeyen, belirlenmiş sürede çalışacak bir java programı hazırlamam lazım. Diğer bir deyişle istenen sürede, belirlenen parametrelere göre makinemin ram, cpu diskini kullanacak.
Ram kullanımı için dizi oluşturdum. Bir int karekteri için 32bit, bir long için 64 bit gerekiyormuş. Kullanıcının gireceği değere göre (10, 100, 1000 gibi) ram kullanımı belirlenecek. Ör: kullanıcı parametre olarak 1000 (yaklaşık 1gb için) 262milyon karekter lazım geliyor. Long [] long_dizi = new Long[length256*1024] // length parametre olarak verilecek
Disk kullanımı için bir text dosyası oluşturdum. For döngüsüyle birşeyler yazdırıyor ve "int filesize = (int)file.length();" "filesizeInMB = filesize/1024/1024;" ile dosya boyutunu alıyor ve while(filesizeInMB < size) için ("size" mb cinsinden dosya boyutu) yazdırıyor. bu şekilde dosya boyutu kontrolü yapılacak ve belirlenen paratmetreye (size) geldiğinde yazma işlemi bitecek.
Süre kontrolünü de aynı şekilde metodoun başında "long start = System.currentTimeMillis();" ile başlangıç zamanını alarak, "end = System.currentTimeMillis();" ile sürekli kontrol yapılıyor ve start-end farkı istenen değere gelince çalışma sonlanıyor.
Bunlar yapabildiklerim ve şu an için problemsiz çalışıyor. dosya boyutunda şöyle bir durum var çalışma süresi çok kısa olduğunda istenilen büyüklükte bir txt dosyası üretilemeyebiliyor. Ancak hem programın çalışma süresi çok kısa olmayacak (5-10 sn gibi) hem de oluşturulacak txt dosyası çok büyük olmayacağı için (ortalama 100 mb olabilir) çok olumsuz bir durum değil.
Bütün bunlar yapılırken program normal olarak cpu harcıyor. Programın harcadığı cpu'yu nasıl kontrol edebilirim ?
Aslında bütün bunların çok hassas olması gerekmiyor ancak en azından sınırlandırılabilir halde olması tercihim. Yukarıda saydıklarım yapılırken misal olarak %15 cpu harcıyorsam bunu %50'ye çıkarmam için neler yapabilirim ? karmaşık hesaplar (log alma, üstel işlemler çarpma bölme vs) yapsam nasıl olur ?
bu işlere yeni başlamış biri olarak bu konudaki tavsiyeleriniz duymak isterim. Teşekkür ederim