Cat
там же стоит условие, которое только в рантайме проверяется
Cat
ещё же по идее v.get_mut() является временным значением, и v.get_mut().unwrap() может(?) уничтожить его
Cat
короче тут всё сложно
Денис
ну вот борроу-чекер не даёт уничтожить :(
Денис
вообще это прям пиздец какой-то, такой простой пример, и такой жёсткий баг
Cat
ну, скоро nll
Денис
да, вот тогда заживём
Денис
ваще жизнь, по крайней мере моя, сильно упростится, когда текущие фичи подвезут
Денис
вот nll и async/await
Денис
и proc-macro 2.0 =)
Cat
и ещё 30 фич
Денис
а чё ещё есть приятное в разработке?
Alexander
Маjко
@c_vld подкинь идей как бенчи сделать стабильнее по результатам.
У меня даже бейзлайн скачет на пару процентов, микрооптимизации вообще невозможно замерить -_-
Я уже даже в одному ядру приколотил, чтобы контекст свитчей меньше было, стало лучше, но все равно говно
Мб есть тайные колдунства с конфигом?
Маjко
Vladimir
Денис
Cat
gui ещё
Денис
ну гуй тапок пилит
Vladimir
Плюс ещё как-то должно быть можно влиять на количество итераций в семпле (что более эффективно) но я не нашел как
Vladimir
Ну мне кажется в статистике чем больше замеров тем лучше
Vladimir
Главное чтоб время тебя устраивало
Маjко
Оно меня уже не устраивает х)
Маjко
Попробую больше семплов сделать
Vladimir
А чё ты бенчишь
Маjко
Хэшмапу
Vladimir
А что именно в ней?
Маjко
И вообще неясно регрессия ли полтора процента, когда std::HashMap вдруг +3%
Vladimir
Там ещё можно задавать уровень ошибок
Vladimir
Вообще нужно смотреть на разброс семплов, может быть бенч такой что семплами не поможешь
Маjко
У меня уже этап микрооптимизации вроде реарренджа бранчей, с увеличение ошибки я вообще потеряю изменения
Vladimir
Может в бенче есть рандомная аллоация памяти? Или другие факторы
Маjко
Маjко
О, +42, это точно регрессия
Vladimir
А ты в одном бенче инсерт и гет делаешь?
Маjко
Маjко
Vladimir
Йеп
Может разделить лучше?
Маjко
Попробую
Сергей
или бенчи запускаются в контейнерах и аффектят друг друга
Сергей
если один и тот же бенч запускать, одинаковые результаты?
Маjко
Маjко
Vladimir
Я единственно что не нашел явного задавания количества итераций для в этом критерион, надо будет сорс почитать, а то я б такой чтоб в ручном режиме задать эти параметры и поглядеть
Сергей
если не повторяется один и тот же бенч, надо брать его разброс как-то
Сергей
или делать декомпозицию на несколько более мелких бенчей
Vladimir
Я ещё не смотрел сорцы, но предположение на вскидку, может тебе не iter для твоего кейса, а один из других типов итерации больше подойдёт?
Vladimir
Там есть когда каждую итерацию нужно дополнительно инициализировать
Vladimir
Либо когда дроп слишком большой
Vladimir
Без кода это пальцем в небо
Маjко
Да
Маjко
Посмотрю что там есть из альтернатив итеру
Маjко
Бля, мне бы одновременно и сетап и дроп вырубить из результата, а там только одно из двух
Vladimir
x)
Денис
ещё раз
Денис
это не гарантированное поведение
qthree
Денис
и ещё раз, в оригинальное задаче не вектор, и get там — не тривиальная операция
qthree
с таким подходом итераторами вообще пользоваться не стоит - а вдруг то что они заинлайнятся не гарантированное поведение
Денис
@inv2004 расскажи товарищу про итераторы и инлайны
Денис
Andrey
https://www.reddit.com/r/ProgrammerHumor/comments/8hnb9v/thou_shalt_not_push_merge_commits/?utm_source=reddit-android
Маjко
Маjко
И да, чуваки, всем спасибо, вопрос решен с nll
Маjко
Anonymous
а подскажите как сделать range (0..100).step(2)
Anonymous
типа с шагом
Anonymous
понимаю что можно сделать через while
պլհկ
В найтли вроде есть step_by
Anonymous
Anonymous
а ну да найтли же
Anonymous
Vladimir
https://docs.rs/itertools/0.4.0/itertools/trait.Itertools.html#method.step
Маjко
Ищу бинарное дерево поиска реализованное на массиве, кто-нибудь встречал?