среда, 10 августа 2011 г.

Программирование ближе к лингвистике

Встретил свежий пример, а встречается такое довольно часто что программисты не дружат даже с арифметикой:

Ccoder:
Проблема:
Хочу изобразить очень большую базу данных в JTable размер строк которой > MAX_INTEGER

А что Вы думаете?

думали разное, но в голову не приходило просто посчитать :)

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

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

Комментариев нет: