Там какие-либо соображения необходимы, чтобы быть взятыми, запуская Вашу программу .NET на x64 по сравнению с x86?

Если я понял вашу логику, вот мое решение:

#method to create samples list
nb_s = 3;nb_d = 2

S = ['s' + str(x) for x in range(1, nb_s + 1)]
D = ['d' + str(x) for x in range(1, nb_d + 1)]
C = ['c' + str(x) for x in range(1, (len(S) * len(D)) + 1)]

print(S);print(D);print(C)

dico_s = {}
for s in S:
    dico_d = {}
    for d in D:
        idx = D.index(d) + len(D) * S.index(s)
        dico_d[d] = C[idx]
    dico_s[s] = dico_d

print(dico_s)

вывод:

S ->['s1', 's2', 's3']
D ->['d1', 'd2']
C->['c1', 'c2', 'c3', 'c4', 'c5', 'c6']

DICO->{'s1': {'d1': 'c1', 'd2': 'c2'}, 
       's2': {'d1': 'c3', 'd2': 'c4'}, 
       's3': {'d1': 'c5', 'd2': 'c6'}}
 --------------------------

**for nb_s = 4 and nb_d = 6**

S -> ['s1', 's2', 's3', 's4']
D -> ['d1', 'd2', 'd3', 'd4', 'd5', 'd6']
C -> ['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'c10', 'c11', 'c12', 
      'c13', 'c14', 'c15', 'c16', 'c17', 'c18', 'c19', 'c20', 'c21', 'c22', 'c23', 'c24']

DICO -> {'s1': {'d1': 'c1', 'd2': 'c2', 'd3': 'c3', 'd4': 'c4', 'd5': 'c5', 'd6': 'c6'}, 
         's2': {'d1': 'c7', 'd2': 'c8', 'd3': 'c9', 'd4': 'c10', 'd5': 'c11', 'd6': 'c12'}, 
         's3': {'d1': 'c13', 'd2': 'c14', 'd3': 'c15', 'd4': 'c16', 'd5': 'c17', 'd6': 'c18'}, 
         's4': {'d1': 'c19', 'd2': 'c20', 'd3': 'c21', 'd4': 'c22', 'd5': 'c23', 'd6': 'c24'}}
14
задан Brian R. Bondy 28 September 2008 в 02:31
поделиться

7 ответов

Остерегайтесь сторонних библиотек COM или третьего лица библиотек.NET, которые тайно выполняют win32 вызовы. Это - то, где мы страдали от наших самых больших головных болей.

19
ответ дан 1 December 2019 в 06:40
поделиться

По моему опыту, портирование приложения Asp.NET было в основном безупречно. Работайте на машине на 32 бита и на 64 битах, и никакой проблемы не происходит около имения в наличии большей памяти. Это происходит, потому что большим количеством проблем, уже упомянутых (реестр, распараллеливая и так далее), управлял Asp.NET, и необходимо правильно зафиксировать их для выполнения в среде Asp.NET.

Сторона клиента (форма окон) то же произошло, но это при использовании некоторых "небезопасных" API для получения специальных папок или доступа к реестру затем некоторая проблема, может произойти, как уже указано.

Massimo

Отношений
0
ответ дан 1 December 2019 в 06:40
поделиться
  • Чтение и запись в 64 битовых значения не ориентированы на многопотоковое исполнение на платформе на 32 бита. Чтение 64 битовых значений берет две операции, которые могли быть прерваны контекстным переключением. См. статью MSDN о Поточная обработка. Взаимно блокируемый. Читайте для получения дополнительной информации.

  • Также соглашаются полностью с ответы torial ! :-)

2
ответ дан 1 December 2019 в 06:40
поделиться

Эта статья имеет много хороших проблем для знания: http://osnews.com/story/20330/Windows_x64_Watch_List

Лично, у моего босса есть 64-разрядный компьютер Vista, и я программирую в 32-разрядном режиме. Мы столкнулись со следующими проблемами:

  • Реестр для приложений на 32 бита скрыт (вид) в папку Wow6432Node. Не все приложения Вы привыкли находить, что путь для в реестре будет в том узле (SQL Server не будет, например).

  • SysWow64 в папке C:\Windows может вызвать проблемы DLLs, не являющегося, где они необходимы (у нас была эта проблема w/третья сторона, лицензирующая компонент).

  • Иногда файлы, в которых Вы нуждаетесь, находятся в "C:\Program Files (x86)", а не "C:\Program Files". Сосет также.

9
ответ дан 1 December 2019 в 06:40
поделиться

От MSDN doco, среди других соображений:

Во многих случаях, блоки выполнят то же на 32-разрядном или 64-разрядном CLR. Некоторые причины программы для поведения по-другому, когда выполнено 64-разрядным CLR включают:

  • Структуры, которые содержат участников, которые изменяют размер в зависимости от платформы, такой как любой тип указателя.

  • Адресная арифметика с указателями, которая включает постоянные размеры.

  • Неправильная платформа вызывает или объявления COM, которые используют Int32 для дескрипторов вместо IntPtr.

  • Кастинг IntPtr к Int32

кроме того, расположениям файла по умолчанию.

11
ответ дан 1 December 2019 в 06:40
поделиться

MSDN подняла немного, замазывают относительно проблем портирования 32-разрядных приложений к 64-разрядной среде выполнения.

http://msdn.microsoft.com/en-us/library/ms973190.aspx

, который Два других блоггера имели ранее, записал о 64-разрядной разработке, когда они работали в команде CLR

2
ответ дан 1 December 2019 в 06:40
поделиться

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

1
ответ дан 1 December 2019 в 06:40
поделиться
Другие вопросы по тегам:

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