Семь шагов переноса программы в 64-битную систему - Нужна ли 64-битная версия продукта?

ОГЛАВЛЕНИЕ

2. Нужна ли 64-битная версия продукта?

Вы должны начинать изучать 64-битные системы с вопроса: "Действительно ли мне нужно переделывать проект для 64-битной системы?" Отвечайте на этот вопрос неспешно, обдуманно. С одной стороны, вы можете отстать от конкурентов, если не предлагаете 64-битные решения. С другой стороны, вы можете напрасно потерять время, разрабатывая 64-битное приложение, не дающие никаких конкурентных преимуществ.

Ниже перечислены основные факторы, которые помогут принять решение.

2.1. Длительность жизненного цикла приложений

Не надо создавать 64-битную версию приложения с коротким жизненным циклом. Благодаря подсистеме WOW64 старые 32-битные приложения успешно работают в 64-битных системах Windows, и оттого нет смысла делать программу 64-битной, если через 2 года она перестанет поддерживаться. Более того, практика показывает, что перенос на 64-битные версии Windows был отложен, и вероятно, большинство ваших пользователей будут использовать только 32-битную версию вашего программного решения в ближайшие годы.

Если вы планируете длительную разработку и поддержку программного продукта, начинайте разрабатывать 64-битную версию вашего решения. Вы можете делать это неспешно, но помните, что чем дольше вы не имеете полную 64-битную версию, тем с большими трудностями вы столкнетесь при поддержке этого приложения, установленного на 64-битных версиях Windows.

2.2. Ресурсоемкость приложения

Перекомпиляция программы для 64-битной системы позволяет ей использовать оперативную память большего объема и ускоряет ее работу на 5-15%. Увеличение на 5-10% будет получено из-за использования возможностей 64-битной архитектуры процессора, например, большего количества регистров. Остальное увеличение скорости на 1-5% объясняется отсутствием уровня WOW64, передающего вызовы API между 32-битными приложениями и 64-битной операционной системой.

Если ваша программа не работает с большими объемами данных (более 2Гб) и скорость ее работы не критична, перенос в 64-битную систему не срочен в ближайшее время.

Кстати, даже простые 32-битные приложения могут получить преимущество при запуске в 64-битной среде. Программа, собранная с ключом /LARGEADDRESSAWARE:YES, может выделять до 3 Гб памяти, если 32-битная Windows запущена с ключом /3gb. Эта же 32-битная программа, запущенная в 64-битной системе, может выделить около 4 Гб памяти (на практике около 3.5 Гб).

2.3. Разработка библиотек

Если вы разрабатываете библиотеки, компоненты или иные элементы, с помощью которых сторонние разработчики создают свое ПО, то вы должны действовать быстро при создании 64-битной версии вашего продукта. Иначе вашим клиентам, заинтересованным в выпуске 64-битных версий, придется искать альтернативные решения. Например, некоторые разработчики программно-аппаратной защиты с большим опозданием отреагировали на появление 64-битных программ, что заставило некоторых клиентов искать другие средства для защиты своих программ.

Дополнительное преимущество выпуска 64-битной версии библиотеки состоит в том, что ее можно продавать как отдельный продукт. При этом вашим клиентам, желающим создать 32-битное и 64-битное приложения, придется купить 2 разные лицензии. Например, такую политику использует Пространственная корпорация при продаже библиотеки Пространственный ACIS.

2.4. Зависимость продукта от сторонних библиотек

Прежде чем планировать работу по созданию 64-битной версии вашего продукта, узнайте, существуют ли 64-битные версии используемых в нем библиотек и компонентов. Также узнайте о ценовой политике, касающейся 64-битной версии библиотеки. Если никакая поддержка не предоставляется, заранее ищите альтернативные решения, поддерживающие 64-битные системы.

2.5. Использование 16-битных приложений

Если ваши решения все еще используют 16-битные единицы, пора избавиться от них. 16-битные приложения не поддерживаются в 64-битных версиях Windows.

Есть один момент, касающийся использования 16-битных установщиков. Они все еще применяются для установки некоторых 32-битных приложений. Есть специальный механизм, заменяющий некоторые из самых популярных 16-битных установщиков на их более новые версии. Это может порождать ложное мнение, что 16-битные программы все еще работают в 64-битной среде. Помните, что это не так.

2.6. Код на ассемблере

Не забывайте, что использование кода на ассемблере большого размера может существенно повысить стоимость создания 64-битной версии приложения.

Обдумав все перечисленные факторы и взвесив все плюсы и минусы, решите, надо ли вам переносить свой проект на 64-битные системы. Если да, идем дальше.