Встретил свежий пример, а встречается такое довольно часто что программисты не дружат даже с арифметикой:
Ccoder:
Проблема:
Хочу изобразить очень большую базу данных в JTable размер строк которой > MAX_INTEGER
А что Вы думаете?
думали разное, но в голову не приходило просто посчитать :)
Skipy:
Я думаю, что для начала надо посчитать объем памяти, которая понадобится, чтобы просто удержать данные в модели. MAX_INTEGER - это 2Гб. Пусть строка таблицы состоит из одного элемента - строки длиной 5 символов. Тогда мы имеем на строку таблицы по минимуму 10 байт на данные (массив символов) + 8 байт на объект (если я правильно помню) + 12 байт на организацию строки (длина, смещение, ссылка на массив символов) + 4 байта на ссылку на строку в модели. Итого - 34 байта. Это абсолютный минимум. Умножим на 2Гб строк - и получим 68Гб - ШЕСТЬДЕСЯТ ВОСЕМЬ ГИГАБАЙТ!!! - памяти.
Ccoder, Вы все еще хотите показывать всю таблицу, или же перейдете к обдумыванию постраничного просмотра?
Ccoder:
Проблема:
Хочу изобразить очень большую базу данных в JTable размер строк которой > MAX_INTEGER
А что Вы думаете?
думали разное, но в голову не приходило просто посчитать :)
Skipy:
Я думаю, что для начала надо посчитать объем памяти, которая понадобится, чтобы просто удержать данные в модели. MAX_INTEGER - это 2Гб. Пусть строка таблицы состоит из одного элемента - строки длиной 5 символов. Тогда мы имеем на строку таблицы по минимуму 10 байт на данные (массив символов) + 8 байт на объект (если я правильно помню) + 12 байт на организацию строки (длина, смещение, ссылка на массив символов) + 4 байта на ссылку на строку в модели. Итого - 34 байта. Это абсолютный минимум. Умножим на 2Гб строк - и получим 68Гб - ШЕСТЬДЕСЯТ ВОСЕМЬ ГИГАБАЙТ!!! - памяти.
Ccoder, Вы все еще хотите показывать всю таблицу, или же перейдете к обдумыванию постраничного просмотра?
Комментариев нет:
Отправить комментарий