При запуске приложения.NET на 32 бита в ОС на 64 бита, это действительно плохо?

Убедитесь, что в настройках VoiceOver установлены числа для чтения чисел в виде слов:

Numbers as words

Всякий раз, когда я получаю доступ к коду ручки из вашего вопроса, используя эти В настройках Safari число читается как слово «десять» вместо цифр «один ноль».

6
задан dr. evil 6 April 2009 в 20:18
поделиться

9 ответов

Нет, это не плохо; На самом деле для приложения я продолжаю работать, я должен быть нацелен на x86 (поскольку он вводит COM-объекты, для которых поставщик не поддерживает x64),

4
ответ дан 10 December 2019 в 02:54
поделиться

Нет, дело не в этом плохо для предназначения для x86 в x64 системах. Вы пропустите дополнительные преимущества x64 и закончите тем, что работали в слое эмуляции на 32 бита. Но это лучше, чем быть полностью поврежденным, и большинство приложений там - все еще 32 бита.

С .NET нормальная причина должно сделать это - зависимость от собственного компонента, 32-разрядного только dll. При отъезде .NET предназначенным от какого-либо CPU, он попытается загрузить 32-разрядный dll в 64-разрядном режиме, приводящем к катастрофическому отказу. В конечном счете Вы действительно хотите переехать от той зависимости, таким образом, можно использовать 64-разрядный режим. Но для одного выпуска это не уничтожит Вас.

1
ответ дан 10 December 2019 в 02:54
поделиться

У меня было приложение перемалывания чисел, которое использовало ЦП много (скот, вызывающий некоторое решение). Выполнение его на Платформе.NET на 64 бита (8 секунд) было приблизительно в 4 раза быстрее, чем 32 бита (30 секунд). Это - просто единственный случай все же.

2
ответ дан 10 December 2019 в 02:54
поделиться

Ответ, "он зависит". Это зависит от того, что делает Ваше приложение, получает ли это доступ к памяти много или нет. Kevin прав: процессор действительно должен сделать преобразование адресов много, но это, вероятно, не повредит производительность Вашего приложения слишком много. Инструкции по используемому оборудованию являются главным образом тем же между x86 и amd64 и нет слишком большой неэффективности, там предполагающей, что авторы CLR знали то, что они делали (и я уверен, что они сделали). Вы могли бы видеть большое различие в производительности, если Вы делаете графическое управление, но так как это - просто приложение.NET, я не думаю, что Вы. Для некоторых задач перемалывания чисел Вы могли бы заметить различие как упомянутый Mehrdad, хотя я буду удивлен, сделали ли Вы.

В целом, я сказал бы для не волнения о проблемах производительности, если у Вас нет чувствительного к производительности приложения. Затем только беспокойство о производительности выходит, после того как Вы понимаете природу своего приложения.

1
ответ дан 10 December 2019 в 02:54
поделиться

То, что необходимо помнить, - то, что, чтобы заставить 32-разрядный процесс работать в 64-разрядной среде система должна сделать перевод адреса памяти для всего, что это делает. Это плохо? Это зависит от сценария. Это определенно не столь эффективно, как это могло быть. Выполнение вириона на 32 бита IIS на x-64 сервере является крайне медленным по сравнению с тем, каково это могло быть. Все это зависит от того, каковы Ваши потребности приложения.

0
ответ дан 10 December 2019 в 02:54
поделиться

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

Иначе версия на 64 бита и на 32 бита .NET является несколько подобной мудрой производительностью.

И также если Вы не должны превышать предел на 2 ГБ для своего процесса, Вам не нужны 64 бита для обращения к возможностям, ОС заботится об этом для Вас использующий специальный режим CPU под названием Длинный Режим - Совместимость SubMode. (ЦП на самом деле работает в режиме на 64 бита, но использует 32 бита для обращения для совместимости),

1
ответ дан 10 December 2019 в 02:54
поделиться

Ваша "ошибка" была то, что Ваш код.NET использует 32-разрядный COM-объект?

Этот случай мог бы действительно быть проблемой при выполнении процесса.NET на 64-разрядной архитектуре, которая была скомпилирована с установкой AnyCPU.

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

Возможное решение состоит в том, чтобы установить Вашу целевую платформу на x86.

0
ответ дан 10 December 2019 в 02:54
поделиться

Я собирался сказать лучший способ сказать наверняка, если иметь размеры, но очевидно если он не будет работать правильно затем, довольно трудно иметь размеры.

В первую очередь, посмотрите, существует ли проблема производительности. Если кажется, что это - проблема, затем видят, можно ли точно определить то, что это находится точно в приложении, которое не является x64 совместимый. Большая часть кода.NET должна быть независимой от платформы, таким образом, наиболее вероятный преступник является любым собственным inter-op или сторонними библиотеками.

0
ответ дан 10 December 2019 в 02:54
поделиться

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

0
ответ дан 10 December 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: