Судзумия
Вот SIMD calculus — вычисления с помощью SIMD
LexsZero
просто обычно словом калкулус называют то что в рашкоуниверах зовется матаном
Судзумия
Ну эт да
Судзумия
Но мы можем представить калькулятор
Судзумия
Судзумия
Старые добрые add
Иван
А старые добрые add по классификации Флинна это что?
Иван
Судзумия
SISD
Иван
А это с каждым языком мой умный компилятор генерирует мне SIMD?
Иван
Или Rust в этом плане как-то отличается?
Судзумия
Если компилятор умеет только
Судзумия
В расте недавно ввели
Судзумия
Но если компилятор умеет, то везде одинаково, да
Иван
Круто, спасибо.
Судзумия
Да не за что
Судзумия
Я даже ради тебя загуглил классификацию Флинна
Судзумия
Сорян, мы тут все из ПТУ
Судзумия
Только и умеем, что код писать
Иван
Ну, я и это нормально делать пока что ещё не умею.
Судзумия
Да лан, это приходящее
պլհկ
Как я понимаю, ситуация следующая.
1.Компилятор (точнее llvm) может сам вставлять simd, когда может доказать что это безопасно. Это всегда было в расте (и других языках на llvm).
2.Компилятор не очень умный, специально подгонять код под оптимизатор с шансом, что при обновлении сломается не хочется, поэтому добавляют поддержку simd в стд. Придется писать инструкции вручную, зато гарантированно. Для пацанов попроще будет высокоуровневая обертка (крейт faster).
kitsu
Есть какой-нибудь аналог partition, только чтоб в начальном контейнере осталось левая часть?
kitsu
Только partition не по предикату, а по индексу
kitsu
ну, т.е контейнер упорядочен
Loo
я правильно понял?
kitsu
yes
kitsu
Вообще BinaryHeap, но сути не меняет
պլհկ
split_at?
kitsu
у кучи что-то нема
Loo
у кучи что-то нема
прежде чем с кучей такие операции производить необходимо преобразовать её в Vec
Loo
функция into_vec
Loo
либо into_sorted_vec
kitsu
ох, неоч
лучше через while/peek/pop сделаю
Loo
Маjко
Аллокации?
kitsu
во-первых аллокации, во-вторых не оч хочется удалять
պլհկ
Какие аллокации?
Loo
1) Частая ошибка - оптимайзить где ещё нет проблем с производительностью. Так сказать преждевременные оптимизации.
2) Если тебе на выходе нужно 2 вектора а не слайса - это в любом случае 2 аллокации в хипе. Какой бы ты способ не юзал (into_vec, into_sorted_vec, peek, хуик).
3) При вызове into_sorted_vec аллокаций насколько я понимаю - не происходит. Он начинает свапать элементы внутри и выкидываает тебе нижележащий вектор. Если я ошибаюсь - поправьте. https://doc.rust-lang.org/src/alloc/binary_heap.rs.html#601-609
Filipp
Loo
@kitsu так ты разобрался?
kitsu
нуу, я сделал как и хотел, т.к это просто
kitsu
но чот не работает
Loo
kitsu
kitsu
у меня правда есть подозрение, что есть крейт для этого
kitsu
Хотел выкидывать пиров, которые долго ничего не говорили
kitsu
ну вот почему-то по времени ничего не убирается
Loyd
Императивненько
պլհկ
может тебе lru_time_cache нужен?
Loo
kitsu
угу, над было погуглить
kitsu
ох, еще и от мейдсефов
Loo
kitsu
пофиксил свой говнокод
@
переписал на lru_cache
@
перестало работать
ㅤ
Регрессионные тесты есть?
Loo
kitsu
ㅤ
(
kitsu
там на самом деле весьма простенькие микросервисы (3 мейна, лол), так что только интеграционные имеют смысл
kitsu
でゲソ
Haha classic
Loo
Mark
rust, swift enterprise
Mark
прекол
Loo
Vlad
Котлин выше раста
でゲソ
Брейнфак просто ортогонален
でゲソ
Фрейд подсказывает что в вашей жизни мало яблочной продукции
Alex
sixten упомянули а например disciple нет
Loyd
carp
Loyd
Открыл я сайт