Java ile en hızlı değişken kontrol yöntemi

Mucosoft

Megapat
Katılım
5 Mart 2014
Mesajlar
5.514
Makaleler
12
Çözümler
41
Öncelikle bu yöntemi spigot eklentisi için soruyorum.
Benim bir alan sistemim var. Şu anda yaklaşık 200-300 arası alan kayıtlı. Bu sayı 1000'leri bile aşabilir, yani genel düşünmeliyiz.
Örnek bir değişken daha doğrusu dizi şu şekilde:

Kod:
Name = Mucosoft.
Pos1 = -4, 0, 0
Pos2 = 10, 255, 28

Buradaki değişkenlerin sayısı sonradan artabilir. Şimdilik 3 farklı değişken var. Bu sadece tek bir alanın verisi. Bundan yüzlerce var.

Detay vermek gerekirse 1. pozisyon ile 2. pozisyon arasında kalan yer oyuncuya ait oluyor. Örneğin oyuncu bir yeri kırdığında önbellekte yer alan tüm veriler kontrol edilecek ve aralıkların eşlenip eşlenmediğine bakacak. Bu durum gecikme yapar mı veya daha farklı kontrol yöntemleri var mı?

Özet geçmek gerekirse sorularım şunlar:
1. yüzlerce değişkeni önbelleğe alsam yani dosyadaki verileri değişken olarak tutsam performansı etkiler mi?
2. bu kadar çok veriyi kontrol etmek performansı etkiler mi? Pozisyon kontrolü yapmanın daha hızlı bir yolu var mı?
 
Son düzenleyen: Moderatör:
3 tane int kullaniyor "pos". int yerine short da kullanabilirsin ( biri 32 digeri 16 bit ) sanki 32 binden fazla deger kullanmayacakmissin gibi duruyor pos icin.

1 pos'u 48 bit ile saklarsin short kullanarak. -> pos = short[3]
2 milyon tane position = 96 000 000 bit yapar ~12 megabyte :)

Distributed cache de kullanabilirsin, redis - hazelcast - ehcache vs.
 
Daha düşük bir alanda arama yapmayı deneyebilirsin. Daha önce spigot eklenti yazmadım ancak eğer Chunk ID tarzı bir şey varsa ilk pozisyonun Chunk ID saklarsın ona göre bir olaylar olur veya direkt SQL kullanırsın ve işi SQL Server'a postalarsın.
 
"Entity Component System" tam senin için biçilmiş kaftan. Yüzlerce, binlerce objeyi kolayca ve hızlıca yönetebilmeni sağlıyor. Kullanabilirsen onu kullan.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
3 tane int kullaniyor "pos". int yerine short da kullanabilirsin ( biri 32 digeri 16 bit ) sanki 32 binden fazla deger kullanmayacakmissin gibi duruyor pos icin.

1 pos'u 48 bit ile saklarsin short kullanarak. -> pos = short[3]
2 milyon tane position = 96 000 000 bit yapar ~12 megabyte :)

Distributed cache de kullanabilirsin, redis - hazelcast - ehcache vs.
Aslında string olarak saklıyorum. String verisini ayırıp dizi haline getiriyor, sonrasında short veya int olarak dönüştürüyorum.
Daha düşük bir alanda arama yapmayı deneyebilirsin. Daha önce spigot eklenti yazmadım ancak eğer Chunk ID tarzı bir şey varsa ilk pozisyonun Chunk ID saklarsın ona göre bir olaylar olur veya direkt SQL kullanırsın ve işi SQL Server'a postalarsın.
SQL kullanırsam gecikme yükselebilir. Ben bu verileri sunucu eklentisi başladığında önbelleğe çekiyorum. Veri okumada önbelleği kullanıyorum. SQL kullanımını sadece veri yazarken kullanıyorum. Ek olarak chunk sistemi ile belirli bir yeri kontrol etme güzel gibi. Bu biraz kolaylık sağlar fakat SQL ile olursa her blok kırma işleminde SQL çalışacak. Bu da performansı etkileyebilir. Saniyede binlerce blok kırıldı diyelim, çok ciddi bir durum.
"Entity Component System" tam senin için biçilmiş kaftan. Yüzlerce, binlerce objeyi kolayca ve hızlıca yönetebilmeni sağlıyor. Kullanabilirsen onu kullan.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bu dediğin şu şekilde mi?

Her nesnenin özellikleri var. Her biri ayrı olarak kayıt ediliyor.

Peki ya bunu koordinat sistemine nasıl entegre edeceğim? Her bir değişkeni nesne olarak düşünün. Değişken içinde değişkenler olacak. Ben değişken içinde hangi değişkenin olduğunu anlamak için değişkenleri taramam gerekecek. Nesne şeklinde olsun, yine aynı şekilde tarama yapılacak.
 
Son düzenleme:

Geri
Yukarı