Алдар
и память выделять вручную
Kirill
Дяденька Саттер учил не изобретать велосипеды, если есть реализация в стандартной библиотеке.
Andrey
Andrey
:D
Kirill
😂
Kirill
Да я не жалуюсь
Kirill
Мне просто интересно
Andrey
и захочется писать велосипед потом, под частную задачу ) Если по памяти - критично )
Andrey
Алдар
будет гордость за то что недоступно всяким джавистам питонистам и тем более джаваскриптерам
Andrey
с калькулятором в руке )
Kirill
Andrey
Алдар
фронтендер ж не программист
Алдар
Алдар
а верстальщик вообще даже не человек!
Kirill
Andrey
Andrey
js - весьма тонкая штука )
Алдар
но фронтенд это весело, ничего не скажешь
Andrey
:D
Алдар
бекенд на плюсах О_о
Kirill
А фронтендер задумывается о том, сколько разных размеров дисплея у смартфонов существует?
Andrey
Kirill
Или это уже не для людей?
Алдар
🦥Alex Fails
нормпльный да
Алдар
ну и фронтендер тоже
Алдар
в 90% случаев)
Andrey
Andrey
Andrey
Kirill
Проверил unordered_set на unsigned long. Файл 382 МБ потребовал 2939 МБ ОЗУ. :D
Stanislav
а обычный set ?
Kirill
2289 МБ :D
Kirill
Чуть получше
Kirill
При том, что set заранее ничего не выделяет, т.е. память целиком используется.
Kirill
Размер больше в т.ч. из-за накладных расходов на каждый элемент. Для примитивных типов связный список дает накладные расходы на элемент больше, чем сам элемент занимает.
Kirill
То биш если хранить большое количество относительно больших объектов, то разница будет не такая большая
Kirill
Нужно проверить на каких-то объектах размером, скажем, 256 байт.
Kirill
Проверил std::unordered_set<std::array<char,256> >
442 МБ
Kirill
Вывод прост: чем меньше размер элемента, тем менее эффективны по памяти эти контейнеры.
Kirill
Нужно было сразу догадаться.
Kirill
Да не в этом дело
Kirill
Я изначально проверял на малых строках (17 байт). На 64 разрядной системе указатель занимает 8 байт. В том же map на каждый элемент нужно три указателя. В результате, накладные расходы больше размера элемента.
Kirill
А в хеш-таблице, допустим, вектор списков. Список, даже если в нем один элемент, хранит несколько указателей.
Andrey
а за память - скоростью
Andrey
самый главный закон разработки )
Square
Square
У них и аллокатор толковый и в контейнеры его пихать можно стдшные
Stanislav
Светомеч
То есть всегда.
Stanislav
хм, а если сделать отсортированный вектор, а рядом мапу положить в которую пихать std::hash и id из вектора? )
Stanislav
хотя можно и не сортировать
Stanislav
время обработки только возможно увеличится, но на потребление памяти я бы посмотрел
Kirill
Пока другим занят.
Stanislav
Stanislav
Dumitru
всем привет, есть небольшой вопрос по поводу наследования
есть класс Base, у этого класа есть строка и метод которы её меняет
есть класс Child, наследует Base. Child вызывает метод который меняет строку, но вывести её не получается (она пустая)
я подозоеваю что у нас две копии этой строки, но немного запутался
Dumitru
http://ideone.com/AH41GI
что может быть?
Artem
Метод get не виртуальный
Dumitru
о есть!
я чет начал делать метод write виртуальным
спасибо!
Dmitry
а можно ли как-то красивее сделать установку нескольких бит подряд?
вметсто
par_flags |= 1 << 2;
par_flags |= 1 << 3;
par_flags |= 1 << 4;
и вместо
par_flags |= 1 << 2;
par_flags |= 1 << 4;
через
#define BITS_TO_SET 0x24
par_flags |= BITS_TO_SET;
?
ovf
а в чём вопрос? тебе сказать значения для BITS_TO_SET?
Dmitry
в красоте
ovf
ответ: par_flags|=0x14 вполне красиво
🦥Alex Fails
enum flags {
flag_1 = 0x1,
flag_2 = 0x2,
flag_3 = 0x4
};
uint32_t flags = flag_1 | flag_3;
Dmitry
посмотрел как сделано в драйвере и сделал по подобию.
(это я первый патч в апстрим готовлю)
🦥Alex Fails
Как там?
Dmitry
ну в драйвере ядра. такие битовые константы через define определены