green_fr: (Default)
[personal profile] green_fr
Объяснил коллеге, зачем нужно преаллокация памяти. Понимаешь, говорю, если добавлять строчку за строчкой в матрицу, то каждый раз MatLab ищет новое место в памяти, копирует туда уже сделанную матрицу и дописывает новую строчку. А если ты сразу сказал ему, сколько у тебя будет строчек — он сразу столько выделил и ничего никуда не копирует.
Понял? Понял!

Сегодня просматриваю написанный им код. В одном месте ему нужна переменная, которую он запишет в Excel. Размер заранее посчитать нетривиально. Преаллокация на 500000 (пятьсот тысяч) строк, из которых реально заполняется две с чем-то тысячи. Команда записи этой матрицы в Excel рушит мой комп...

Date: 2018-01-17 11:00 am (UTC)
From: [identity profile] muh2.livejournal.com
Что такое строчка?

А то 5е5 указателей зарезервировать - не проблема. Если честно, то и 5е5 256 байтных строк - тоже не проблема.

Date: 2018-01-17 01:11 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Если бы оно работало, я бы даже не заметил этой строчки, наверное. Но оно же пытается записать 500000 пустых строк в Excel. То есть создать структуру на 500000 строк, в которых нет ничего. И вот здесь, видимо, тоже талантливые люди писали код, потому что эта операция не проходит на 16GB RAM. Памяти не хватает.

Date: 2018-01-17 01:27 pm (UTC)
From: [identity profile] muh2.livejournal.com
Это я понимаю. Я не понимаю - что такое "строка". Какой длины? Это может быть указатель в 4 байта. Указатель на структуру байт в 8. Видывал я строки по умолчанию в 256 байт. Но может это и 2^16 байт. Тогда может и зашкалить. А так-то 5е5 это всего лишь 0.0005 Гига.

Date: 2018-01-17 01:33 pm (UTC)
From: [identity profile] green-fr.livejournal.com
В данном случае - это "строка Excel". Очень растяжимое понятие. Особенно, если её представляет не сам Excel, а сторонняя (в данном случае MathWorks) библиотека. Сколько съедает одна строка памяти - это уже на совести разработчика.

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 07:48 pm
Powered by Dreamwidth Studios