Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Скорость или размер. Динамика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Существует ли какие-нибудь мета редакторы(авто дописывание кода)? http://www.cyberforum.ru/cpp/thread1778902.html
Всем доброго времени суток! Я решил оптимизировать свою работу и придумал следующую идею на основе авто кода в C++ XE3. Если в среде написать switch и следать пробел, то программа сама допишет то,...
C++ Таблица символов для компилятора Делаю простой компилятор и что-то зависла на вопросе о том, как хорошо реализовать таблицу символов. Реализовать в виде класса, где в качестве поля используется, скажем, вектор, в который добавляются... http://www.cyberforum.ru/cpp/thread1778725.html
C++ Хэш код для нормализованного вектора
Мне нужно генерировать 64-разрядный хэш для трехмерных нормализованных векторов (double). Хэши должны быть равны если сгенерированы из одного или равных (поэлементно) векторов. У кого какие мысли?...
C++ Немного про std::string
Привет, читал про std::string на разных сайтах. 1. Там говорят, С++ 11 гарантирует, что std::string будет stored contiguously in memory. В этом я не сомневаюсь, но каким еще образом можно в...
C++ Объединение нескольких png файлов в один png-файл http://www.cyberforum.ru/cpp/thread1777427.html
В общем надо написать програмулину, которая объединяет несколько png файлов (ширина и высота одинаковы у изображений) в один png-файл. Пример: Есть пара png-картинок: :p, :D, :(, =-O, :yes:,...
C++ Как операционная система выделяет виртуальную память процессу? Добрый вечер, хотел уточнить насчёт адресации: создаётся экземпляр win32 программы, выделяет процесс и 1 поток - ОС даёт процессу виртуальное адресное пространство в 4 ГБ - другими словами адрес,... подробнее

Показать сообщение отдельно
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,551
14.07.2016, 12:28  [ТС]
Цитата Сообщение от hoggy Посмотреть сообщение
указатель на объект helper (type erasure),
который умеет "запоминать" тип хранимого ресурса.
Не пойдёт мне кажется, загуглил.. но результатом возврата type_id будет соответствовать общяя структура VARIANT. (вложенный union он не возьмёт)
Вообще исходя из потери памяти при использовании VARIANT/union меня напрягает.. (например если я возьму максимальный член в union'e 8 байт, то всё что меньше - будет просто жрать лишнюю память, и ничего я с этим не смогу поделать, в виду того, что даже если хотел бы это оптимизировать, то всё к чему я смогу свести затраты - это использование в 86х - 4байтовых указателей на доп массивы с 8 байтовыми типами. А все что ниже границы в 4 байта - будет провисать. С другой стороны можно для меньших типов тоже сделать доп массивы, а в самом VARIANT держать порядковые номера.)
Цитата Сообщение от hoggy Посмотреть сообщение
в принципе, это все,
что нужно знать для его изготовления.
Да я уже давно этим занимаюсь, как сделать косо-криво, ну так как "принято" - это не проблема, но хочется же чего то более оптимального.
Цитата Сообщение от hoggy Посмотреть сообщение
"дата ориентированное программирования".
зайимусь) спс.

По поводу битовых полей - изначально я задумался а чем отличается signed от unsigned. Поидее если использовать 1бит, то можно в нём хранить знак, остальные биты уйдут непосредственно на значение, допустим Short: (unsigned)2^16=65536, если юзать 1 бит как показатель знака, то максимум останется 2^15 = 32768, но ведь если оно unsigned, то бит знака будет лишним. И так, значит компилер не юзает 1бит, а грубо говоря где то в кэше хранит type_id, в соответствии с которым в случае signed - если число заходит за предел в 32768, то автоматически делает X-32768, что и гарантирует отрицательное значение(ну это я утрирую конешно, в реалии я думаю сделано чуть логичнее). Так вот в этом случае использование битового поля неоправдано, но ведь если сущуствуют, то есть реальный пример того, где они могут сыграть полезную роль. Я не имею ввиду разбитие 1 байта на 8bool переменных, хотя это тоже хороший плюс. Я задумался над проблемой выделения больших кусков памяти, если в 86х ОС максимальный размер стэка (как и читаемой области памяти) это 4ГБ (2^32), то использовать unsigned long long не имеет смысла, т.к. как бы мы не хотели - помимо нашей программы ОСи придётся потратить ~1ГБ на себя и минимальные службы. Остаётся 3ГБ, если мы их выделим - это будет равносильно 100% использования ОЗУ, что поведёт плачевные последствия, тогда максимум для 86х будет 1.5 Гб (можно даже 2ГБ, ну с 500 метрами в запасе - жить возможно, подобный случай выделения 2гб=2^31 будет достаточно редким, поэтому можно ещё сократить, а 2гб планку оставить как exception. Думается что для нормы будет достаточно давать максимум на выделение - 250мб (должно быть это 2^28), в этом случае остаётся 4бита -> 2^4=16, ну в числе 16 можно сохранить покрайней мере основные типы. Это я всё к тому, чтоб оптимизировать максимальную границу с возможностью использовать "лишние биты" для нужных целей, в этом случае в памяти не будет лишних сегментов.

Добавлено через 20 минут
Цитата Сообщение от hoggy Посмотреть сообщение
"дата ориентированное программирования".
Такое not exist.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru