Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Результаты опроса: Что бы выбрали Вы?
Скорость 7 35.00%
Экономия памяти 2 10.00%
Найду компромисс, даже если его нэт 5 25.00%
Чё? 6 30.00%
Голосовавшие: 20. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
1

Скорость или экономия памяти - что бы выбрали Вы?

05.11.2017, 11:14. Просмотров 704. Ответов 29
Метки нет (Все метки)


...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2017, 11:14
Ответы с готовыми решениями:

Экономия памяти или борьба с точками. (что-то типа массива ссылок хотелось бы иметь)
У меня есть объект Point. И есть Объект Grup. В объекте Grup я выделил динамически память под...

Экономия памяти
Доброго времени суток, не знаю как надо делать, вот и спросил, допустим есть игра, где шарик просто...

Экономия памяти
Здравствуйте, уважаемые программисты! Как разместить информацию о числах из массива, используя...

Экономия памяти
Скажите, будет ли второй вариант кода занимать меньше памяти? 1ый вариант: float a; f(a); ...

29
27 / 27 / 16
Регистрация: 22.08.2017
Сообщений: 126
05.11.2017, 11:30 2
Тут нет предмета для спора.
Гигабайт стоит 100 долларов, а гигафлопс стоит гораздо дороже.
Так что в большинстве задач скорость гораздо важнее.
Во всяком случае сейчас, пока не придумают как радикально повысить скорость вычислений.
1
Эксперт C
25428 / 15822 / 3385
Регистрация: 24.12.2010
Сообщений: 34,599
05.11.2017, 11:32 3
Вопрос представляется вполне нелепым. Зависит все от задачи, от требований.
0
145 / 129 / 44
Регистрация: 15.02.2010
Сообщений: 700
05.11.2017, 11:48 4
А на каком автомобиле, mkostoevr, Вы поедете в магазин: на двуместном скоростном авто, или на грузовом автомобиле?
4
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
16.11.2017, 16:38  [ТС] 5
Байт, задача следующая:

Пишется простой компилятор. Есть две идеи, в каком виде хранить данные (точнее их промежуточное представление для дальнейшего перевода в nasm):

"имя переменной", 0, размер типа переменной, состояние (она инициализирована?), количество байт кодирующих размер значения при инициализации, размер значения при инициализации, значение при инициализации

Размер значения указывается потому, что это может быть массив. При этом максимальное значение байт в [значение при инициализации] ограничивается только максимальным размером типа, помноженном на максимальное количество элементов в массиве (sizeof (UINT64) * max (UINT64) == ДОФИГАЛИАРД).

Но такие большие массивы используются редко, так что, хотелось бы кодировать размер [значение при инициализации] переменной, находящийся в [размер значения при инициализации] наименьшим количеством байт, которое указывается уже в переменной [количество байт кодирующих размер значения при инициализации].

Это будет нехило так экономить память.

Всё бы хорошо, однако, так мне придётся тратить больше времени, чтобы достать это значение размера даты переменной, учитывая размер этого [размера даты].

НО! Я могу всегда кодировать размер даты одним и тем же количеством байт. Это неэффективно расходует память, если размер даты небольшой, а для кодирования его значения я буду использовать 8 байт (использоваться из них будет только один).

Что бы в данной ситуации выбрали бы Вы?
0
Эксперт C
25428 / 15822 / 3385
Регистрация: 24.12.2010
Сообщений: 34,599
16.11.2017, 18:19 6
mkostoevr, Как я понял, вопрос стоит так. Есть некоторые числа - размеры. Их диапазон от 1 до 264. Как следует хранить эти числа? Отводить на каждое по 8 байт или упаковывать: 1 байт на размер размера + сам размер? Я правильно понял?
Теперь смотри. Сколько может быть переменных? Наверное, не больше сотни. Если в модуле больше переменных - скорее всего он неумело написан. Значит, наш выигрыш не превосходит 700 байтов. Это та цифра, о которой надо говорить? К тому же более изощренный код твоей программы (с упаковкой и распаковкой) сам будет занимать какое-то количество памяти, что сведет даже этот небольшой выигрыш к нулю. К тому же, не стоит забывать и об увеличивающейся трудоемкости разработки и увеличении количества потенциальных ошибок. Так что, имхо, в твоей ситуации не стоит ловить блох и их подковывать
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
16.11.2017, 18:50  [ТС] 7
Байт, понял, благодарю.
0
Evg
Эксперт CАвтор FAQ
21153 / 8169 / 628
Регистрация: 30.03.2009
Сообщений: 22,468
Записей в блоге: 30
16.11.2017, 19:43 8
Цитата Сообщение от mkostoevr Посмотреть сообщение
Пишется простой компилятор
Ты для начала напиши его, чтобы он хотя бы без ошибок работал. А потому уже будешь думать о том, как его оптимизировать (если вообще дойдёшь до такой стадии)
0
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
16.11.2017, 19:52  [ТС] 9
Да, я уже пытался писать его по алгоритму "Make it work -> make it right -> make it fast". Теперь приходится его переписывать из-за бесперспективной архитектуры
0
3317 / 2694 / 729
Регистрация: 25.03.2012
Сообщений: 9,733
Записей в блоге: 1
16.11.2017, 23:35 10
mkostoevr, вы компилятор с интерпретатором часом не путаете?
0
301 / 213 / 74
Регистрация: 23.05.2011
Сообщений: 970
16.11.2017, 23:42 11
Если данные помещаются в память — ускоряем за счёт памяти. Когда уже не помещаются, выбора нет.

От задачи зависит, в общем.

Добавлено через 3 минуты
С переменными вообще просто. Для обычных ничего не делаешь, для массивов создаёшь скрытую переменную, где хранишь его размер (то есть, две переменные).
0
Эксперт C
25428 / 15822 / 3385
Регистрация: 24.12.2010
Сообщений: 34,599
17.11.2017, 00:20 12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
вы компилятор с интерпретатором часом не путаете?
В самом деле, разница не так уж велика. Даже посконный машинный код (именно машинный, а не ассемблерный), уже загруженный и привязанный к адресам, в конце концов интерпретируется процессором. А в рамках поставленных в этой теме вопросов, так и вообще нечего говорить.
0
3317 / 2694 / 729
Регистрация: 25.03.2012
Сообщений: 9,733
Записей в блоге: 1
17.11.2017, 00:31 13
Я просто наверное не так много проектов повидал, чтобы встретить реальный любительский компилятор какого- либо языка. Чтоб вот прямо в объектник файл компилировал!

Добавлено через 1 минуту
Интерпретаторы каких-нибудь простеньких языков, это, напротив, всегда пожалуйста для новичка!
0
Эксперт C
25428 / 15822 / 3385
Регистрация: 24.12.2010
Сообщений: 34,599
17.11.2017, 00:41 14
mkostoevr, Твоя проблема - не время/память. От упаковки выигрыш в памяти = 0.1%. Без упаковки выигрыш во времени = 0.01%. И тут, как ни странно, критерием становится сложность разработки. То есть твое личное время, и твоя личная память.

Добавлено через 6 минут
Для примера приведу кое-что из личного опыта. Вот есть база данных. А в ней тексты. И текст может быть длиной от 3-х байтов (есть такие простые русские слова) до 2000. Ну и что? выделять на простое слово 2000 байтов? А записей в базе 1000000. И тут уже приходится, не жалея своего личного времени, что-то придумывать
1
27 / 27 / 16
Регистрация: 22.08.2017
Сообщений: 126
17.11.2017, 10:40 15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Чтоб вот прямо в объектник файл компилировал!
Обычно такие трансляторы на выходе дают Сишный текст. Который потом можно компилировать Сишным транслятором под любую платформу.
0
Evg
Эксперт CАвтор FAQ
21153 / 8169 / 628
Регистрация: 30.03.2009
Сообщений: 22,468
Записей в блоге: 30
17.11.2017, 10:55 16
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Я просто наверное не так много проектов повидал, чтобы встретить реальный любительский компилятор какого- либо языка
Любительский компилятор написать очень сложно. Пока его напишешь, уже перестанешь быть любителем

А многие реально путают компилятор со всякими нанотехнологиями. Т.е. можно на выходе "компилятора" получать текст на Си (см. пост #15), чтобы скормить его существующему компилятору. Я не знаю, как по научному называется такое, но это не компилятор, в том смысле, который подразумеваешь ты, но не правильно понимают некоторые. Есть ещё другая технология, которая может построить реальный объектный код (или ассемблерный файл), но такой код сплошь состоит из вызова библиотечных функций - это так называемый "шитый код". Такое уже под силу любителю, но по прежнему нельзя назвать словом компилятор

Так что я присоединяюсь к тебе - любителю написать простенький, но настоящий компилятор, будет ОЧЕНЬ проблематично
1
2746 / 1695 / 350
Регистрация: 09.09.2017
Сообщений: 7,129
17.11.2017, 10:59 17
Какой-нибудь LLVM не поможет? Вроде как gcc через него работает.
0
Evg
17.11.2017, 11:04
  #18

Не по теме:

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Какой-нибудь LLVM не поможет?
А кому он должен помочь?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Вроде как gcc через него работает
Через него clang работает

0
COKPOWEHEU
17.11.2017, 11:16
  #19

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение
А кому он должен помочь?
писателям компиляторов

0
Evg
17.11.2017, 16:01     Скорость или экономия памяти - что бы выбрали Вы?
  #20

Не по теме:

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
писателям компиляторов
Он может помочь только тем писателям, у которых вопрос стоит как "хочу написать свой компилятор, что мне делать?". У ТС'а вопрос другой - "я УЖЕ написал компилятор, как мне его ускорить". Ну и в реальности тут скорее всего не компилятор, а интерпретатор. Т.е. ТС'у llvm нафиг не нужен

0
17.11.2017, 16:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2017, 16:01
Привет! Вот еще темы с ответами:

QDir и экономия памяти
Пишу программу под ARM. Вывожу в таблицу содержимое директории расположенной на Flash с помощью...

Экономия памяти и справочные таблицы
Всем привет! Я не так давно работаю в Access и никак не могу уяснить для себя вот какое дело:...

Экономия памяти при упаковке данных
Здравствуйте, уважаемые программисты! Есть такая задача: Задан упорядоченный целочисленный...

Что значит скорость памяти в тестовом режиме?
Что значит скорость памяти в тестовом режиме?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.