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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Существует ли какие-нибудь мета редакторы(авто дописывание кода)? http://www.cyberforum.ru/cpp/thread1778902.html
Всем доброго времени суток! Я решил оптимизировать свою работу и придумал следующую идею на основе авто кода в C++ XE3. Если в среде написать switch и следать пробел, то программа сама допишет то, что нужно программисту. Пример: я писал switch(Enum_Value), где enum Enum_Value{Value1,Value2,Value3} После того, как я нажимал пробел или enter, программа сама дописывала switch(Enum_Value){...
C++ Таблица символов для компилятора Делаю простой компилятор и что-то зависла на вопросе о том, как хорошо реализовать таблицу символов. Реализовать в виде класса, где в качестве поля используется, скажем, вектор, в который добавляются символы. При этом, чтобы такая таблица была одна, и другие классы, представляющие структуру языка (Variable, Constant) могли к ней обращаться. Думала о реализации Одиночки, но не очень хорошо... http://www.cyberforum.ru/cpp/thread1778725.html
C++ Хэш код для нормализованного вектора
Мне нужно генерировать 64-разрядный хэш для трехмерных нормализованных векторов (double). Хэши должны быть равны если сгенерированы из одного или равных (поэлементно) векторов. У кого какие мысли? Может есть стандартный алгоритм? Да и ещё - после генерации 64-разрядного хэш-кода я увязываю его с 64-разрядным "ключевым сидом" методом XOR и далее сливаю в 32-битное значение применяя XOR к...
C++ Немного про std::string
Привет, читал про std::string на разных сайтах. 1. Там говорят, С++ 11 гарантирует, что std::string будет stored contiguously in memory. В этом я не сомневаюсь, но каким еще образом можно в памяти хранить std::string? 2. Говорят, что std::string на самом деле имеет null-terminator на конце. Это так? Вроде да, я в этом немного убедился в своей студии. Сделал четыре std::string'a, через...
C++ Объединение нескольких png файлов в один png-файл http://www.cyberforum.ru/cpp/thread1777427.html
В общем надо написать програмулину, которая объединяет несколько png файлов (ширина и высота одинаковы у изображений) в один png-файл. Пример: Есть пара png-картинок: :p, :D, :(, =-O, :yes:, :swoon: Итоговое изображение должно выглядеть примерно как-то так: :p :D :( =-O :yes: :swoon: Видел примеры кусков как это реализовано на яве, но так как я в ней вообще не разбираюсь, то ничего в...
C++ Как операционная система выделяет виртуальную память процессу? Добрый вечер, хотел уточнить насчёт адресации: создаётся экземпляр win32 программы, выделяет процесс и 1 поток - ОС даёт процессу виртуальное адресное пространство в 4 ГБ - другими словами адрес, что придёт через new будет от 0..size_t::max за исключением первых 256 - как служебные - но каждому 0x001 адресу, что мы видим в студии не соответствует реальный адрес на ОЗУ - так как ОС защищает от... подробнее

Показать сообщение отдельно
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.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru