Иногда памяти не хватает не из-за объема данных, а из-за размера исполняемого модуля программы. В давние времена мне случалось сталкиваться с графическими программами, которые состояли из многих страниц кода следующего вида:
for 1 = [17. 43] set(i . 68)
for i = [18. 42] set(i . 69)
for j » [81. 91] set(30 , i )
for j = [82. 92] set(31. i) где set(i, j) включает соответствующий пиксел экрана. Добавление специальных функций (например, hor и vert для рисования горизонтальных и вертикальных линий) позволило бы заменить этот код на последовательность вызовов:
hor(17 , 43. 68) hor(18. 42. 69) vert(81. 91. 30) vert(82. 92. 31)
Такой участок кода можно было бы заменить интерпретатором, считывающим данные из массива, наподобие такого:
h 17 43 68 h 18 42 69 v 81 91 30 v 82 92 31
Если это все еще занимает слишком много места, каждую из строк можно упаковать в 32-разрядное слово, отведя 2 бита на команду (h, v и еще две запасные) и 10 битов на каждое иэ трех чисел, лежащих в диапазоне 0. .1023. (Преобразование должно, разумеется, осуществляться самой программой.) Этот гипотетический пример наглядно демонстрирует результат применения нескольких методов уменьшения объема кода.
Опубликовал vovan666
April 17 2013 00:01:58 ·
0 Комментариев ·
4539 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.