Независимо от преимуществ, я бы посоветовал вам всегда компилировать вашу программу для системного размера слова по умолчанию (32-битного или 64-битного), поскольку, если вы компилируете библиотеку как 32-битный двоичный файл и предоставляете ее на 64-битная система, вы заставите любого, кто хочет соединиться с вашей библиотекой, предоставить свою библиотеку (и любые другие библиотечные зависимости) в виде 32-битного двоичного файла, когда 64-битная версия доступна по умолчанию. Это может быть довольно неприятно для всех. В случае сомнений предоставьте обе версии своей библиотеки.
Что касается практических преимуществ 64-битного ... наиболее очевидным является то, что вы получаете большее адресное пространство, поэтому, если вы отображаете файл, вы можете обратиться к большему количеству его за один раз (и загрузить большие файлы в память). Другое преимущество состоит в том, что, если компилятор хорошо выполняет оптимизацию, многие из ваших арифметических операций могут быть распараллелены (например, поместив две пары 32-битных чисел в два регистра и выполнив два сложения в одной операции сложения), и большие вычисления чисел будут выполняться быстрее. Тем не менее, целые 64-битные и 32-битные компоненты вообще не помогут вам с асимптотической сложностью, поэтому, если вы хотите оптимизировать свой код, вам, вероятно, следует обратить внимание на алгоритмы, а не на постоянные факторы, подобные этому.
РЕДАКТИРОВАТЬ :
Пожалуйста, не обращайте внимания на мое утверждение о параллельном сложении. Это не выполняется обычным оператором add ... Я путал это с некоторыми векторизованными инструкциями / SSE. Более точное преимущество, помимо большего адресного пространства, состоит в том, что существует больше регистров общего назначения, что означает, что в регистровом файле ЦП можно поддерживать больше локальных переменных, что гораздо быстрее, чем если вы поместите переменные в программный стек (что обычно означает выход в кэш L1).