Apakah ada alasan yang baik untuk menyediakan versi 32-bit bersama dengan versi 64-bit dari setiap perangkat lunak yang ditargetkan pada desktop modern mesin, menjalankan modern sistem operasi 64-bit 64-bit hardware?
Tampaknya bahwa 64-bit perangkat lunak akan lebih efisien, memungkinkan untuk lebih tinggi penggunaan memori jika dibutuhkan, dll. Apple bahkan menggunakan prosesor 64-bit untuk ponsel mereka, meskipun mereka hanya memiliki 1-2 GB RAM, cara di bawah 4 batas GB untuk 32-bit CPU's.
Kecuali membandingkan yang sangat spesifik arsitektur CPU, sistem operasi, dan perpustakaan infrastruktur di sini, saya tidak't dapat pergi ke rincian lebih lanjut.
Perbedaan antara 32 bit perangkat lunak dan 64 bit perangkat lunak adalah ukuran pointer, dan mungkin ukuran register integer. Yang's ini.
Itu berarti semua pointer dalam program anda adalah dua kali ukuran. Dan (setidaknya pada ILP32/LP64 arsitektur) anda `selama ini adalah dua kali ukuran juga. Hal ini biasanya bekerja untuk sekitar 30% peningkatan dalam kode objek size. Ini berarti bahwa ...
Ini memiliki lapisan non-diabaikan efek negatif pada kinerja.
Lakukan ini hanya masuk akal jika anda dapat "buy back" kinerja mereka biaya yang, entah bagaimana. Pada dasarnya, ada dua cara untuk melakukan hal ini: anda melakukan banyak 64 bit bilangan bulat matematika, atau anda membutuhkan lebih dari 4 GiByte dipetakan memori. Jika salah satu atau keduanya dari mereka adalah benar, masuk akal untuk menggunakan 64 bit perangkat lunak, jika tidak, itu doesn't.
Catatan: ada beberapa arsitektur di mana tidak ada yang sesuai 32 atau 64 bit varian. Dalam hal ini, pertanyaan yang jelas doesn't make sense. Yang paling terkenal adalah IA64, yang hanya 64 bit dan tidak memiliki 32 bit varian, dan x86/AMD64 yang, meskipun terkait erat, berbeda arsitektur x86 yang hanya 32 bit, AMD64 menjadi 64 bit saja.
Benar-benar, bahwa kedua pernyataan ini tidak 100% benar lagi. Linux baru-baru ini menambahkan x32 ABI, yang memungkinkan anda untuk menjalankan AMD64 kode dengan 32 bit pointer, jadi meskipun yang's tidak "tepat" arsitektur CPU, itu adalah cara menggunakan arsitektur AMD64 sedemikian rupa seolah-olah asli 32 bit varian. Hal ini dilakukan dengan tepat karena kinerja biaya overhead yang saya sebutkan di atas menyebabkan nyata measurable, dapat diukur masalah bagi pengguna dunia nyata berjalan di dunia nyata kode dalam sistem dunia nyata.
Jika kebutuhan perangkat lunak untuk antarmuka langsung dengan sistem warisan, driver atau perpustakaan, maka anda mungkin perlu untuk menyediakan versi 32-bit, karena AFAIK OS umumnya (pasti Windows dan Linux AFAIK) doesn't memungkinkan pencampuran 64-bit dan 32-bit kode dalam proses.
Misalnya, jika anda kebutuhan perangkat lunak khusus untuk mengakses perangkat keras, it's tidak jarang bagi pelanggan untuk mengoperasikan model lama yang hanya 32-bit driver yang tersedia.
Jika anda software adalah perangkat lunak DLL, anda HARUS memberikan kedua 32-bit dan 64-bit versi. Anda tidak tahu apakah pelanggan akan menggunakan 32-bit atau 64-bit perangkat lunak untuk bicara DLL, DLL harus sama-sama menggunakan bit-panjang seperti aplikasi. Ini adalah non-negotiable.
Jika anda software adalah perangkat lunak standalone executable, it's kurang jelas. Jika anda don't membutuhkan software untuk dijalankan pada Os yang lebih tua, anda mungkin tidak perlu menyediakan versi 32-bit. Hanya menempel 64-bit, menentukan bahwa hal ini membutuhkan OS 64-bit, dan pekerjaan yang dilakukan.
Namun jika anda membutuhkan software untuk dijalankan pada Os yang lebih tua maka anda dapat secara aktif *TIDAK ***** ingin menyediakan sebuah versi 64-bit. Jika anda memiliki dua versi maka anda memiliki dua pengujian, dan pengujian perangkat lunak di berbagai versi OS dan bahasa bukanlah proses yang cepat. Sejak 32-bit perangkat lunak berjalan dengan sempurna bahagia pada platform 64-bit, it's masih cukup umum untuk perangkat lunak dirilis hanya sebagai 32-bit, terutama oleh pengembang yang lebih kecil.
Juga mencatat bahwa sebagian besar ponsel adalah 32-bit. Mungkin beberapa high-end yang 64-bit sekarang, tapi ada's sedikit alasan kuat untuk melakukan langkah itu. Jadi jika anda're mengembangkan cross-platform dan mungkin ingin kode anda untuk berjalan di Android juga, tinggal 32-bit merupakan pilihan yang aman.