최신 데스크톱 컴퓨터를 대상으로 64 비트 하드웨어에서 최신 64 비트 운영 체제를 실행하는 소프트웨어의 64 비트 버전과 함께 32 비트 버전을 제공해야 할 이유가 있습니까?
64 비트 소프트웨어가 더 효율적이고 필요한 경우 더 높은 메모리 사용을 허용하는 것처럼 보입니다. Apple은 1-2GB의 RAM 만 있어도 4GB 이하의 전화에도 64 비트 프로세서를 사용합니다. 32 비트 CPU에 대한 제한.
최신 데스크톱 컴퓨터를 대상으로 64 비트 하드웨어에서 최신 64 비트 운영 체제를 실행하는 소프트웨어의 64 비트 버전과 함께 32 비트 버전을 제공해야 할 이유가 있습니까?
64 비트 소프트웨어가 더 효율적이고 필요한 경우 더 높은 메모리 사용을 허용하는 것처럼 보입니다. Apple은 1-2GB의 RAM 만 있어도 4GB 이하의 전화에도 64 비트 프로세서를 사용합니다. 32 비트 CPU에 대한 제한.
답변:
매우 구체적인 CPU 아키텍처, 운영 체제 및 라이브러리 인프라를 비교하지 않으면 자세한 내용을 알 수 없습니다.
32 비트 소프트웨어와 64 비트 소프트웨어의 차이점은 포인터의 크기와 정수 레지스터의 크기입니다. 그게 다야.
이는 프로그램의 모든 포인터가 두 배 크기임을 의미합니다. 그리고 (적어도 ILP32 / LP64 아키텍처에서는) long
크기도 두 배입니다. 이는 일반적으로 객체 코드 크기가 약 30 % 증가합니다. 이것은…
이것은 성능에 무시할 수없는 부정적인 영향을 미칩니다.
이렇게하면 성능 비용을 "구매"할 수있는 경우에만 의미가 있습니다. 기본적으로이 작업을 수행하는 방법에는 두 가지가 있습니다. 64 비트 정수 연산을 많이 수행하거나 4GB 이상의 매핑 된 메모리가 필요합니다. 이들 중 하나 또는 둘 다에 해당되는 경우 64 비트 소프트웨어를 사용하는 것이 좋습니다. 그렇지 않으면 그렇지 않습니다.
참고 : 해당 32 또는 64 비트 변형이없는 아키텍처가 있습니다. 이 경우 질문은 분명히 이해가되지 않습니다. 가장 잘 알려진 것은 64 비트이고 32 비트 변형이없는 IA64와 x86 / AMD64는 서로 다른 아키텍처 이지만 밀접하게 관련되어 있지만 x86은 32 비트이며 AMD64는 64 비트입니다.
실제로, 그 후자의 진술은 더 이상 100 % 사실이 아닙니다. Linux는 최근 x32 ABI를 추가하여 32 비트 포인터로 AMD64 코드를 실행할 수있게했는데, 이것이 "적절한"CPU 아키텍처가 아니더라도, 네이티브가있는 것처럼 AMD64 아키텍처를 사용하는 방법입니다 32 비트 변형. 이 정확하게 이루어졌다 때문에 제가 위에서 언급 한 성능 오버 헤드가 발생시킨 실제 실제 시스템에서 실제 코드를 실행하는 실제 사용자를위한 측정, 정량화 문제.
소프트웨어가 레거시 시스템, 드라이버 또는 라이브러리와 직접 인터페이스해야하는 경우 AFAIK OS (일반적으로 Windows 및 Linux AFAIK)에서 64 비트와 32 비트를 혼합 할 수 없으므로 32 비트 버전을 제공해야 할 수도 있습니다. 프로세스 내의 비트 코드
예를 들어, 소프트웨어가 특수 하드웨어에 액세스해야하는 경우 고객이 32 비트 드라이버 만 사용할 수있는 구형 모델을 운영하는 것은 드문 일이 아닙니다.
소프트웨어가 DLL 인 경우 32 비트 및 64 비트 버전을 모두 제공 해야 합니다. 고객이 32 비트 또는 64 비트 소프트웨어를 사용하여 DLL과 통신하는지 여부는 알 수 없으며 DLL은 응용 프로그램과 동일한 비트 길이를 사용해야합니다. 협상 할 수 없습니다.
소프트웨어가 독립 실행 형 실행 파일이면 덜 명확합니다. 구형 OS에서 소프트웨어를 실행할 필요가없는 경우 32 비트 버전을 제공하지 않아도됩니다. 64 비트 만 사용하고 64 비트 OS가 필요하고 작업이 완료되도록 지정하십시오.
그러나 이전 OS에서 소프트웨어를 실행해야하는 경우 에는 64 비트 버전을 제공하고 싶지 않을 수 있습니다 . 두 가지 버전이있는 경우 테스트가 두 배가되며 다양한 OS 버전 및 언어에서 소프트웨어를 올바르게 테스트하는 것은 빠른 과정이 아닙니다. 32 비트 소프트웨어는 64 비트 플랫폼에서 완벽하게 실행되므로, 특히 소규모 개발자가 소프트웨어를 32 비트로 만 릴리스하는 것이 일반적입니다.
또한 대부분의 모바일은 32 비트입니다. 아마도 일부 고급 제품은 64 비트 일지 모르지만 그 단계를 밟을만한 이유는 거의 없습니다. 따라서 크로스 플랫폼을 개발 중이고 코드가 Android에서도 실행되도록하려면 32 비트를 유지하는 것이 안전합니다.