Vladimir
у меня сейчас подозрения что парсить не хорошая идея, учитывая что бигинты могут работать в десятичной системе, а u256 должны парсить
Маjко
неа (
Ну тогда не проверю
Vladimir
Маjко
Vladimir
стоп, я не говорю что для твоей задачи чет там быстрее, я говорю что ты может бенчи не правильно приготовил
Маjко
Итераций вычисления там дохуя
Nikolay
https://github.com/DevHeap/collatz_conjecture/blob/bench/src/backend/collatz-rs/src/tests.rs#L135
внутри бенча парсится строка? :D
Маjко
Убери парсинг — 20нс прибавится, ничего это не меняет)
Маjко
Маjко
Маjко
Убрал парсинг из обоих бенчей, поменялось ожидаемо нихуя
Nikolay
многовато в бенче других неизвестных, чтоб однозначный вывод сделать
Маjко
Например, это каких? :D
Nikolay
smallvec где-то юзается, где-то нет
calc_sequence_for_number и calc_sequence_rs по-разному работают
ща попрофайлим что конкретно там больше времени занимает
Маjко
Сережа
Надо ещё забенчить реализацию на си и хаскеле, репу назвать зимняя специальная олимпиада
Nikolay
> calc_sequence_for_number
неодинаково
Маjко
Одинакого
Маjко
Спешл обновил
Маjко
Сережа
Разве копи и клон не отличаются только тем что клон надо явно вызывать?
Маjко
Сережа
Я имею ввиду понятно, что это трейты и в клон можно винт форматировать, но это плохая практика
Сережа
Ок
Маjко
Не одно и то же, зависит от реализации, но если у типа есть Clone но нет Copy, то обычно это не зирокост потому что надо данные в куче ворочать
Сережа
Понял, спасибо
Nikolay
спасибо, поисследую на досуге, где тормозит
но проблема в бенче скорей всего ;)
Маjко
Включение фичи asm кстати вообще ситуацию не меняет
Маjко
Маjко
Маjко
Если найдешь феерический косяк бенча — пингани
Nikolay
асм автоматом включается на найтли
https://github.com/paritytech/bigint/blob/master/build.rs#L14
Маjко
Окей
Маjко
Как вырубить?
Vladimir
Vladimir
Оно же на нем основано
Маjко
Посмотреть, мб раст лучше заоптимизирует
Маjко
Там есть реализация для стейбла
Маjко
Без асма
Nikolay
Если только убрать билд.рс, но асм версия всегда имела преимущество на нормально распределенных числах
Маjко
А, у меня ж есть и так в другом проекте форк bigint
Маjко
Ща
Vladimir
Перешёл бы лучше на другую либу для бенчей
Маjко
Нахер?
Маjко
Vladimir
Нахер?
тогда и бенчи будут в стейбле, и графики крутые
Маjко
Vladimir
criterion-rs
Vladimir
ща ссылку дам
Маjко
Кстать, есть что-нибудь умеющее строить график по коммитам?
Маjко
То есть затестить последние 10
Маjко
И выдать по ним график
Vladimir
https://github.com/japaric/criterion.rs
Маjко
Желательно конечно по встроенным бенчам
Vladimir
хз может у гита есть встроенная фигня, фича гит binary search
Маjко
ээ?
Ignat
есть bisect
Vladimir
ну у гита есть бинарный поиск когда надо найти баги
Маjко
И что мне это даст?
Маjко
График времени выполнения бенча на выборке коммитов построит?
Ignat
если бы эта функциональность была встроена в гит
Ignat
я бы определённо пользовался другой системой контроля версий
Маjко
Мне и не нужно чтобы это было встроено в гит епт
Vladimir
ну поиск умеет просто делать разные операции вроде как
Маjко
И?)
Vladimir
или я не прав?
Vladimir
ладно, смотри, этот критерион умеет диф собирать
Vladimir
если добавить к нему батчинг по гит коммитам, то будет какраз то что нужно
Vladimir
бинарный поиск умеет специфичный батчинг, тебе нужен более линейный
Vladimir
вот про это речь
Маjко
Ну если надо писать свою тулзу для этого или держать файлы criterion в репе, то как бы можно и плагин к cargo уже сделать, который то же самое даст на встроенных бенчах
Маjко
git checkout HEAD~6
cargo bench
git checkout HEAD~5
cargo bench
...
Vladimir
можно, но тут типа из коробки
Маjко
Поставил звездочку, мб как-нибудь заюзаю
Маjко
Но пока что встроенных с головой, не хватает только граффика бенча по коммитам
Маjко
Хм, можт щас прям и накатать