Aidar
>кроссплатформенно >Dx
ed
>кроссплатформенно >Dx
Слишком категоричны.. dx - был упомянут в контексте остальных апи.. gl/vk чем не кроссплатформа?
Aidar
Слишком категоричны.. dx - был упомянут в контексте остальных апи.. gl/vk чем не кроссплатформа?
Серьезными ограничениями на железо? Позже вам захочется нарисовать все опционально на CPU и вы лососнете тунца
ed
Серьезными ограничениями на железо? Позже вам захочется нарисовать все опционально на CPU и вы лососнете тунца
Ну, слишком старое железо меня не интересует. А на картах > 2010 - не вижу проблем..
Aidar
Вулкану нужно ещё и правильно настроенное окружение, ну там ICD loader, ICD сами
Aidar
Как по мне гуй должно рисовать то что для этого предназначено, и почти всегда это только средства платформы
Aidar
https://blog.qt.io/blog/2017/02/06/native-look-feel/
Anton
как там qt не старается все равно не натив )
Anton
если виндузятники еще едят, маководы уже нет )
Aidar
Ну на винде реально незаметно
xv88
аааааааааааааааааааа
xv88
!!!!!!
Roman
как минимум, отсутствуют переносы строк =)
Ignat
@supapro
Berkus
вроде бы всё правильно
Berkus
если я правильно понял, это монадическая реализация калькулятора?
Oleg
Нашёл ошибку у себя, извините что отвлек.
Berkus
а, тогда не очень монадическая. Предлагаю сделать ее монадической!
Anonymous
Здравствуйте 😁
Igor
верните код, я хочу на это посмотреть 9_6
Berkus
верните код, я хочу на это посмотреть 9_6
не, не хочешь, там лучший в мире парсер выражений cin >> p1 >> zn1 >> p2 >> zn2
Berkus
бизон плачет на яке и антлером вытирается
Oleg
верните код, я хочу на это посмотреть 9_6
Вы про мой код, его вернуть? Сюда прислать или в лс?
Nik
Сап, продот Нужна структура данных, в виде коллекции, в которой при добавлении нового элемента удаляются все старые которые не использованы более N времени Есть ли у такого какое-то название и может быть где есть готовая реализация в std/boost/etc? Очень желательно интерфейс в духе std, для взаимодействия с алгоритами и все такое
Nik
спс
Vsevolod
правильный lru - это очень затратно
Nik
хм, а почему бы что-то подобное не подогнать под stl и не добавить в стандарт?
Vladimir
хм, а почему бы что-то подобное не подогнать под stl и не добавить в стандарт?
Интерфейс очень сложный, не понятно что считать доступом к данным. Да и политик работы кэша существует много разных (есть, например, еще ARC Cache (Adaptive replacement cache)).
Vladimir
Плюс итераторы, какие на них должны быть гарантии?
Nik
Да, я вот подумал, к нему итераторы вообще можно корректно прикрутить?
Nik
Все нагугленные реализации в т.ч. буст без них
Vladimir
Вот-вот. Я думаю, для конкретной реализации можно, если знать что делаешь,
Joy
там были здоровенные сэмплы данных с кучи метеостанций, по ним писали диссертации о погоде - а по факту кучи блоков данных не хватало, часть была испорчена, всякая не совпадающая хрень подогнана и т.п.
Друг и коллега (работает за столом напротив) решал подобную задачу. Нужно было нормализовать поток данных порядка 20 Гц за период несколько недель, с учётом того что они собраны через com-usb конвертер (не реалтайм, usb буферизует), и таймкод брался с системного вызова на сборщике после того, как очередной кусок данных прилетел (по одному вызову time() на каждый кусок, примееерно 20 раз в секунду. При этом часть данных отсутствует, часть косячная. Задача привести их к виду, когда между таймкодами по 50мсек ровно и недостающие семплы интерполированы. Ушло полмесяца, из которых большую часть занимало сидение и смотрение в стол, вцепившись головой в волосы. Сама задача возникла по причине применения приборов не по назначению, в нормальной ситуации мы имеем правильные данные с таймкодом в реалтайме
Joy
Условно, были ситуации когда за одну секунду 18 сэмплов, за другую 17, за третью 20 и потом 25. Это простой случай, когда все сэмплы на месте, просто "уползли" вперед. Но обычно помимо сдвига есть и недостающие, и нужно это определить, решить куда именно нужно добавить, етс
Nik
спс
А, погодите, чего-то не понимаю. lru_cache это key-value коллекция, и судя по реализации, ограниченная не временем, а размером
Vladimir
А, погодите, чего-то не понимаю. lru_cache это key-value коллекция, и судя по реализации, ограниченная не временем, а размером
Представь, что у тебя размер всех элементов - это 1, тогда твой LRU cache ограничен по количеству элементов. Это в теории, а можно ли провернуть такой финт с бустовой реализацией, я не знаю
Nik
>Представь, что у тебя размер всех элементов - это 1, тогда твой LRU cache ограничен по количеству элементов. Но мне по сути не важен размер, только время
Nik
Ну и какой смысл в размере 1? О_о
Vladimir
Я не говорю, что у элемента размер 1, а то, что у элемента "виртуальный" размер == 1.
Constantine
https://habrahabr.ru/post/349624/
Я сразу вспоминаю как курсач по чмам писал
Constantine
Мы там налабалили, у нас все ок, все защитили, а через неделю я неожиданно понял, что у нас тупо бага. Пришел к преподу, он сказал "а, да, так нельзя, давай назад зачетку", поржали
Nik
ну так используй в качестве метрики U время, в чем проблема-то?
Если что, проблема написать свое такое - не проблема, я просто хотел взять что-то готовое и обобщенное и использовать
Nik
ну и к слову LRU по определению key-value?
Vladimir
Нет
Vladimir
LRU = Least recently used, это политика того, какие элементы мы удаляем из контейнера
Berkus
ну и к слову LRU по определению key-value?
эээ Least-Recently Used это по определению "наименее недавно использованный"
Nik
fxd: LRU cache по определнию key-value?
Vladimir
Тоже нет, это описывает политику вытеснения из кэша. А не устройство кэша.
Nik
Ок, спс Тогда просто напишу свой велосипед, ибо интерфейс нагугленных реализаций мне не подходит
Berkus
ну кэш обычно key-value, ибо так удобнее находить то что закешировал
Constantine
https://habrahabr.ru/post/349624/
Хм... автор нубло хуже, чем я, когда был студентом. Он пихает численный метод в функцию, поведение которой ему неизвестно, и умудряется отловить не floating point проблемы.
Berkus
Ок, спс Тогда просто напишу свой велосипед, ибо интерфейс нагугленных реализаций мне не подходит
сортируешь по времени, находишь std::lower_bound и зачищаешь, делов там на 2 минуты
Constantine
и делаешь map/unordered_map key->value в котором в записи записано число появлений в деке
Constantine
после этого очистка вычитывает deque и если запись последняя, грохаешь
Constantine
на самом деле постановка очень странная, обычно кэш размером ограничивают, а не временем хранения
Vladimir
и делаешь map/unordered_map key->value в котором в записи записано число появлений в деке
А зачем этот map, если мы все обращения пихаем в дэку? Можно просто эту деку и чистить.
Vladimir
Так автор же сказал, что ему не нужно key-value контейнер
Constantine
как-то оверинжинирнуто
это вроде самая простая из асимптотически правильных для key-value
Berkus
вектора хватит
Constantine
нет, там очередь принципиальная
Berkus
потом если будут затыки по скорости - можно будет профилировать и менять
Constantine
у тебя push_back и pop_front
Berkus
std::vector<T> shits; sort(shits, std::less<key>()); erase(shits.begin(), lower_bound(shits, X)); всё, вся имплементация
Constantine
ты про что?
Berkus
про удаление из кэша
Constantine
ты сорт на каждый запрос очистки вызывать хочешь?)
Constantine
в LRU кэше?)
Berkus
ты сорт на каждый запрос очистки вызывать хочешь?)
пока это влияет на 0% производительности - похуй
Arseny
Всегда считал, что самый простой lru кеш это двусвязный intrusive список.
Vladimir
Его не нужно сортировать
Constantine
ну тогда ты можешь просто фором проходить