Почему для моего случая Matlab 64 бит длиннее? - PullRequest
0 голосов
/ 25 августа 2010

Чтобы увеличить своевременность моих программ matlab, я получил Windows 7 (64-битную) и 64-битную Matlab. и я установил на раздел жесткого диска. К сожалению, я был шокирован, увидев, что время выполнения программы больше с 64-битным Matlab. Я не знаю в чем проблема. зная, что у меня есть процессор Core 2 Quad и 3 ГБ оперативной памяти.

Ответы [ 2 ]

4 голосов
/ 25 августа 2010

В общем, 64-битный код не делает код быстрее. Это просто позволяет вам получить доступ к большему количеству памяти. Ваш код будет ускоряться, только если он был ограничен в памяти в 32-битном процессе. В Matlab это обычно вызывает ошибки Out Of Memory, а не замедления. А поскольку у вас всего 3 ГБ, вы, вероятно, не достигли 32-разрядного ограничения в 4 ГБ. Так что вы, вероятно, не должны ожидать ускорения. Замедление, однако, удивительно.

Используете ли вы объектно-ориентированный Matlab, особенно старый (до MCOS) стиль? В 64-битном Matlab в Windows существует известная ошибка, которая увеличивает накладные расходы при отправке метода. OO-код будет работать медленнее в 64-битном Matlab, чем 32-битный Matlab, при этом замедление возрастает с увеличением плотности вызовов методов. В моей кодовой базе (в основном OO) это примерно в 2 раза медленнее. Это о величине, которую вы видите.

См. Медленно ли работает MATLAB OOP или я что-то не так делаю? . (Там это обсуждается по касательной.)

Вы все еще можете запускать 32-битный Matlab в 64-битной Windows. (Хотя это официально не поддерживается.) Эта схема не страдает от замедления отправки метода, плюс она получает 4 ГБ виртуальной памяти вместо 2 ГБ, что было бы под 32-битной ОС. (Вероятно, полезно, если у вас> = 4 ГБ ОЗУ.) Если 32-разрядная версия работает быстрее на той же машине, вы должны сообщить об этом как об ошибке в MathWorks; чем больше пользователей упоминают об этом, тем больше вероятность того, что его исправят.

2 голосов
/ 25 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...