Date: 2018-01-18 10:34 am (UTC)
Блочной аллокации у него точно нет, про это я читал какие-то их технические статьи, когда нарвался на проблему с дефрагментацией RAM. Мы из-за этого переходили на 64-битную архитектуру, потому что MathWorks нам сказал, что в 32-битной (не помню, у них ли, или у Windows) нет дефрагментации, а в 64-битной есть. А у нас регулярно вылетало out of memory при попытке аллокации матрицы на 200 МБ, например, при свободных (и доступных MatLab) 600 МБ. И проблема зачастую решалась перезагрузкой, после которой память дефрагментировалась автоматически.
Вот в этот момент они чётко рассказали, что каждая матрица у них должна занимать последовательные ячейки памяти.

А про масштаб 1:15 - да, я как-то не задумывался о его вменяемости. Но в примере по ссылке выше у MathWorks примерно такой же результат.

Квадратичный - потому что, если ты переаллокируешь каждые X строчек, и каждый раз копируешь уже накопленные данные, то операция копирования (я предполагаю, что именно она занимает время) будет рости квадратично с размером матрицы. Грубо говоря, ты копируешь 1 строку, потом 2, потом 3 и т.д., а сума арифметической прогрессии - это квадрат. А если аллокация каждые 2^n строчек (как предположил ты), то сумма степенного ряда даст 2^(n+1). То есть, линейный рост с ростом изначальной матрицы.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

green_fr: (Default)
green_fr

May 2025

S M T W T F S
    1 23
4 5 678910
11 12 1314 15 1617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 09:58 pm
Powered by Dreamwidth Studios