32Bit/64Bit Uyumlu Veri Tipleri

MEKA

Discord: mekaprojects
Site yetkilisi
Süper Moderatör
Premium Üye
Grafiker
Geliştirici
Yardımsever Üye
Mesaj
2.788
Çözümler
287
Beğeni
2.032
Puan
1.850
Ticaret Puanı
2
Bildiğiniz gibi metin2 dosyalarında düzenlemeler hep 32bit için ayarlı buraya geleneksel veri tiplerini yazıyorum.

DWORDuint32_t
WORDuint16_t
BYTEuint8_t
IDENTuint32_t
long long intint64_t
signed long longint64_t
long longint64_t
unsigned longuint32_t
long intint32_t
longint32_t
short intint16_t
unsigned shortuint16_t
shortint16_t
unsigned charuint8_t
time_tint32_t
size_tuint32_t
unsigned intuint32_t
INTint32_t
intint32_t
uintuint32_t
signedint32_t
unsigneduint32_t
charchar
signed charchar
 
dwordu uint32_t yapınca ikisinede uyumlu mu oluyor doğru mu anladım
 
dwordu uint32_t yapınca ikisinede uyumlu mu oluyor doğru mu anladım
bunlar sabit veri tipleri, genelde çoklu platformlarda uyumluluk için kullanılır.

DWORD windows platformları için özel veri tipi, 32 bit windowsda dword unsigned int (uint32_t) iken 64 bit windowsda unsigned long (uint64_t) diye defineli.


uint32_t her platformda 32 bit. x86_64, IA32, IA64, x64_64 hepsinde 32 bit.
 
bunlar sabit veri tipleri, genelde çoklu platformlarda uyumluluk için kullanılır.

DWORD windows platformları için özel veri tipi, 32 bit windowsda dword unsigned int (uint32_t) iken 64 bit windowsda unsigned long (uint64_t) diye defineli.


uint32_t her platformda 32 bit. x86_64, IA32, IA64, x64_64 hepsinde 32 bit.
peki 64 bit yapmak için ne gerek metin2de sadece 64 bit sourceylemi karşılaştırsam bi 64 bit files yok çünkü sanırsam
 
peki 64 bit yapmak için ne gerek metin2de sadece 64 bit sourceylemi karşılaştırsam bi 64 bit files yok çünkü sanırsam

piyasada 64 bit diye gezinen çoğu files normal filesin veri tiplerinin 32 bit sabit veri tipiyle değiştirilmiş hali. bildiğim kadarıyla gerçekten 64 bit files kullanan yok.


çoğu 64 bit yaptım diyen kişiye dediğim gibi, unsigned long yerine uint32_t kullanıp -m64 ile derlemek 64 bit yaptığın anlamına gelmiyor çünkü o veri -m32 ile de 32 bit, -m64 ile de 32 bit..
 
piyasada 64 bit diye gezinen çoğu files normal filesin veri tiplerinin 32 bit sabit veri tipiyle değiştirilmiş hali. bildiğim kadarıyla gerçekten 64 bit files kullanan yok.


çoğu 64 bit yaptım diyen kişiye dediğim gibi, unsigned long yerine uint32_t kullanıp -m64 ile derlemek 64 bit yaptığın anlamına gelmiyor çünkü o veri -m32 ile de 32 bit, -m64 ile de 32 bit..
devde paylaşılmış bir 64 bit source var gördün mü hiç bilmiyorum o 64 bit mi yoksa o da dediğin gibimi ?
 
piyasada 64 bit diye gezinen çoğu files normal filesin veri tiplerinin 32 bit sabit veri tipiyle değiştirilmiş hali. bildiğim kadarıyla gerçekten 64 bit files kullanan yok.


çoğu 64 bit yaptım diyen kişiye dediğim gibi, unsigned long yerine uint32_t kullanıp -m64 ile derlemek 64 bit yaptığın anlamına gelmiyor çünkü o veri -m32 ile de 32 bit, -m64 ile de 32 bit..

32bit ile 64bit arasındaki fark sana göre veri boyutunun büyümesimi?
Oyunun 32bit veri tiplerinde sorun yok zaten ki senin dediğin yapılırsa oyun hafızası büyüyecek ve ram kullanımı dahada artacak
Buna hiçte gerek yok bu veri tipleri bulunduğu platforma göre değer alır
Burda dikkat edilmesi gereken yaptığınız işlemleri client ve server taraflı 2 türlüde yapmanız gerekmekte
intptr_t ve uintptr_t 'yi doğru kullanın long ve ptrdiff_t kullanmaktan kaçının özellikle freebsd11 ve üzeri için
 
32bit ile 64bit arasındaki fark sana göre veri boyutunun büyümesimi?
Oyunun 32bit veri tiplerinde sorun yok zaten ki senin dediğin yapılırsa oyun hafızası büyüyecek ve ram kullanımı dahada artacak
Buna hiçte gerek yok bu veri tipleri bulunduğu platforma göre değer alır
Burda dikkat edilmesi gereken yaptığınız işlemleri client ve server taraflı 2 türlüde yapmanız gerekmekte
intptr_t ve uintptr_t 'yi doğru kullanın long ve ptrdiff_t kullanmaktan kaçının özellikle freebsd11 ve üzeri için

evet, benim için veri boyutunun büyümesi.

32 bitlik class a alabileceğinden fazla veri koymaya çalıştığında oyun çıktığı yeri tersten görür mesela. 32 bit veri tipi kullanıp -m64 ile derlediğinde tek farkeden şey programın sistemde ram sınırlamasının kalkması oluyor.

64 bit kullanan global bir serverin tek kanalı 40 gb yiyor(online sayısı fazla). -m64 kullanıp 32 bit veri tipleri kullandığında 16 - 17 gb ulaştığında item duplicate alıp db core yiyordu.
 
evet, benim için veri boyutunun büyümesi.

32 bitlik class a alabileceğinden fazla veri koymaya çalıştığında oyun çıktığı yeri tersten görür mesela. 32 bit veri tipi kullanıp -m64 ile derlediğinde tek farkeden şey programın sistemde ram sınırlamasının kalkması oluyor.

64 bit kullanan global bir serverin tek kanalı 40 gb yiyor(online sayısı fazla). -m64 kullanıp 32 bit veri tipleri kullandığında 16 - 17 gb ulaştığında item duplicate alıp db core yiyordu.

Anlatmak istediğin şu mu :
64bit işletim sistemleri 32bit'e göre daha fazla veri depolayabildiği için ve ram kullanımı arttığı için
32bit veri tipleri buna karşılık veremiyor ve 64bit olarak revize edilmesi gerekiyor

intptr_t ve uintptr_t veri tipleri bunun için yokmu zaten
ek olarak core alan sunucunun freebsd11 ve üzeri sürüm olması muhtemel

Yinede fikrine saygı duyuyorum benim inandığım yol bu
 
evet, benim için veri boyutunun büyümesi.

32 bitlik class a alabileceğinden fazla veri koymaya çalıştığında oyun çıktığı yeri tersten görür mesela. 32 bit veri tipi kullanıp -m64 ile derlediğinde tek farkeden şey programın sistemde ram sınırlamasının kalkması oluyor.

64 bit kullanan global bir serverin tek kanalı 40 gb yiyor(online sayısı fazla). -m64 kullanıp 32 bit veri tipleri kullandığında 16 - 17 gb ulaştığında item duplicate alıp db core yiyordu.
Hocam yani gerçek anlamda bir 64 bit server buildi için gereken şey 'unsigned int'i 'uint32_t' yerine 'uint64_t' e mi çevirmek? Yoksa bu daha büyük problemlere mi yol açar?

@Denizeri24 hocam etiketlediğim için kusura bakmayın konu eski olduğundan farkedemezsiniz diye düşündüm.
 
Son düzenleme:
Hocam yani gerçek anlamda bir 64 bit server buildi için gereken şey 'unsigned int'i 'uint32_t' yerine 'uint64_t' e mi çevirmek? Yoksa bu daha büyük problemlere mi yol açar?

@Denizeri24 hocam etiketlediğim için kusura bakmayın konu eski olduğundan farkedemezsiniz diye düşündüm.
uint32_t olacak bir şeyi uint64_t yaparsan veriyi şöyle olacaktır örnek veriyorum. Yang üzerinden ilerleyelim yang değerlerini aşağıda gösterdiğim şekilde yaparsan böyle büyümeler olacaktır. Konuda yazdıklarımı düzgün kullanmadığın sürece boyutlar büyüyecek.
uint32_t yapınca:
4.294.967.295
uint64_t yapınca:
18.446.744.073.709.551.615
 
uint32_t olacak bir şeyi uint64_t yaparsan veriyi şöyle olacaktır örnek veriyorum. Yang üzerinden ilerleyelim yang değerlerini aşağıda gösterdiğim şekilde yaparsan böyle büyümeler olacaktır. Konuda yazdıklarımı düzgün kullanmadığın sürece boyutlar büyüyecek.
uint32_t yapınca:
4.294.967.295
uint64_t yapınca:
18.446.744.073.709.551.615
Hocam acaba bu büyüme potansiyel max yang miktarının büyümesi mi yoksa yang hesabının bozulması mı? Yani diyelim oyunda birisi bir yaratık kesti ve 4.294.967.295 yang kazanması gerek, uint64_t değeri tanımlı bir serverda hesabına 18.446.744.073.709.551.615 yang mı eklenecek demek?
 
Hocam yani gerçek anlamda bir 64 bit server buildi için gereken şey 'unsigned int'i 'uint32_t' yerine 'uint64_t' e mi çevirmek? Yoksa bu daha büyük problemlere mi yol açar?
Tüm verileri olduğu gibi en yüksek veri tipine çevirmeye gerek yok. Bu sefer daha fazla kaynak tüketir.
Gerekli olan yerleri yükseltmeniz daha mantıklı olur. Mesela neden 64 bit'e yükseltmek istiyoruz...
Mesela ben tek bir kanalda corelere bölmeden daha fazla anlık oyuncuyu tutmak istiyorum diyelim.

Bu durumda oyuncu bilgilerini tutan sınıflardaki veri tiplerini 64'e çıkartabilirsiniz. Fakat karakterin kendi sınıfında yer alan veri tiplerini normal tutmanız yeterli. Eğer @Trashy 'nin dediği gibi yang limitini filan arttıracaksanız yükseltebilirsiniz.

Kısacası özetlemek gerekirse bu iş biraz komplike bir işlem. Yükseltilecek yerler var yükseltilmeyecek yerler var.
 
Tüm verileri olduğu gibi en yüksek veri tipine çevirmeye gerek yok. Bu sefer daha fazla kaynak tüketir.
Gerekli olan yerleri yükseltmeniz daha mantıklı olur. Mesela neden 64 bit'e yükseltmek istiyoruz...
Mesela ben tek bir kanalda corelere bölmeden daha fazla anlık oyuncuyu tutmak istiyorum diyelim.

Bu durumda oyuncu bilgilerini tutan sınıflardaki veri tiplerini 64'e çıkartabilirsiniz. Fakat karakterin kendi sınıfında yer alan veri tiplerini normal tutmanız yeterli. Eğer @Trashy 'nin dediği gibi yang limitini filan arttıracaksanız yükseltebilirsiniz.

Kısacası özetlemek gerekirse bu iş biraz komplike bir işlem. Yükseltilecek yerler var yükseltilmeyecek yerler var.
İşte şimdi anladım hocam çok teşekkür ederim. O zaman önce bütün değerleri tablodakilerle (32 bit veri tipleri) değiştirip, sonradan ihtiyaç dahilindeki kod kısımlarını 64 bit veri tipine upgrade edeceğim.
 
Geri
Üst