Pull to refresh
2
0.1
Китаев Антон@Notevil

Инженер программист

Send message

а как оно было раньше?
в boost ведь давно корутины есть.

В P1789 std::integer_sequence обзавёлся методами, позволяющими использовать его в structured binding и template for:

И я вдруг понял, что этого всю жизнь не хватало.

Но еще жизнь надо будет подождать, пока я на 26 стандарт перейду.

а как? там какой-то особый механизм для этого есть? Или сторонняя утилита для проверки?

А можно ли понять, что случилась коллизия не поймав баг при отладке?

А я всегда добавлял pipe в poll и останавливал его с помощью записи в pipe.
eventfd на сколько помню чисто linuxовая история, а мне надо чтобы и под mac работало.
Хотя в последний раз меня попросили отдельно реализовывать поллер на epoll и kqueue, iocp. Последние два имеют возможность добавить пользовательское событие чтобы проснуться. А в epoll по старинке через pipe.

Этот коментарий ведь про кеш?

Как -то тоже нужно было сделать поиск по имени файла. Тупое решение влоб привело просто к тому, что мы ооооочень долго пробирались по файловой системе. Очевидно стало, что нужно иметь какую-то быструю индексацию.
Начал смотреть как работают известные файловые менеджеры, dolphin, nemo, nautilus. У них у всех индексируется определенный набор директорий Downloads, Documents, и т.д. За индексацию отвечает отдельный сервис, который в фоне все это обновляет.
В теории можно было тоже как-то использовать этот индекс, но решение нужно было кросплатформенное linux, mac, windows, а тут еще и на каждом DE linux свои решения. В итоге отложили на неопределенное время.

Так и живут люди с медленным поиском.

Сегодня не используется владение через указатель на базовый класс

Именно так
Ну и как тут уже упоминали

В embedded мире часто приходится жертвовать идиоматичностью и красотой кода ради соответствия жестким ограничениям по памяти или производительности

Поменяется код придется руками исправлять, забудешь исправить - сам дурак. Это же c++.

Для запуска Bloaty с отладочным файлом используется флаг --debug-file.

bloaty --debug-file=/path/to/debug_symbols_file /path/to/my_stripped_executable


А есть инструкция как этот правильно применяется? Допустим собрали вы свой проект с описанными флагами для оптимизации включая --strip-all, с gcc на линукс с cmake. Где искать `/path/to/debug_symbols_file` ?

Я у себя столкнулся с такой особенностью виртаульных таблиц.
У меня был код, который использовал базовый класс как интерфейс, но сами реализации не хранились в одном месте через указатель на этот базовый класс. Но сам базовый класс имел виртуальный деструктор, как советуют core гайды.
Удаление этого деструктора, сэкономило мне около 10К в бинарнике.
Утечек нет, потому что не используется владение через указатель на этот базовый класс и деструктор вызывается всегда сразу у потомка.

Ну нельзя же сам велосипед с таким двигателем. А велосипедист может хоть 10кВт выдавать если он такой супермен.

А есть опция использовать системно установленную библиотеку, и если ее нет, то свою, поставляемую?

А оно кроссплатформенное, на мак и виндовс эта схема будет так же работать?

Вчера только решил попробовать. Не было связи с сервером. Обидно.

А как управлять внешними зависимостями? Единый репозиторий пакетов, где все лежит в стандартизированном виде, или поддержка различных инструментов, как клонирование напрямую с git или штуки на подобии conan и vcpkg. А в каком виде? Так же в коде типо `import "https://github.com/fmtlib/fmt#master"`?

Можно ли это реализовать в новом компиляторе c++, который будет одновременно поддерживать стандарт и расширять его необходимыми фичами для самособираемости кода? С учетом модулей, возможно даже без нестандартных pragma можно будет уже собирать код с дефолтными флагами.

В даже в настоящее время проект - это просто папки и набор файлов в них с описанием того что нужно с этим сделать, вместо указания того, что нужно сделать непосредственно с их содержимым.

Я не понимаю разницу?
Или хочется чтобы, то как собирается приложение было сразу в исходном коде?

Извините за оффтоп и за критику, но не могу больше терпеть.
Часто вижу ваши комментарии, пишите интересные вещи, вроде бы, и по делу, вроде бы. Но они часто заминусованные. Причина, как мне кажется, это ваш стиль написания. Каждый комментарий как пережеванная каша из слов. Нужно несколько раз прочитать и все равно нет гарантии понимания.
И мне обидно, что из-за этого ваше мнение, кажется, остается не услышанным.

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

работать со значениями а не указателями

Я это утверждение не понял. AnyAny ведь внутри тоже будет использовать указатель?
на примере

struct Draw {
  template<typename T>
  static void do_invoke(const T& self) {
    self.draw();
  }
};

self это ссылка (читай указатель).

Эффективность тоже можно получить за счёт того что не выделяется память под маленькие объекты и что указатель на значение лежит не в объекте, а рядом с указателем на vtable, что позволяет их грузить одновременно, а не по очереди

До конца тоже не понял. Для классического полиморфизма не важно как и где выделяется память же, главное ссылку на объект заиметь.

Я наверное плохо читал, у AnyAny есть бенчмарки? Особенно интересно учитывая, что автор этой статьи сделал опровержение и эффективности все таки не обнаружено.

В статье упоминаются сторонние библиотеки типа c-ares. А в каком случае использовать их вместо getaddrinf()?
Мне в голову приходит только кросс платформенные приложения, чтобы не сильно разбираться, а что там резолвит в windows, и мобилках.

Information

Rating
3,480-th
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity