Vladimir
у меня сейчас подозрения что парсить не хорошая идея, учитывая что бигинты могут работать в десятичной системе, а u256 должны парсить
Маjко
неа (
Ну тогда не проверю
Маjко
у меня сейчас подозрения что парсить не хорошая идея, учитывая что бигинты могут работать в десятичной системе, а u256 должны парсить
Ну они даже без учета парсинга медленнее. И парсинг происходит только один раз в начале, добавил для честности. Потому что bigint там парсит Парсить надо по условию задачи, приходит текстовый инпут
Vladimir
стоп, я не говорю что для твоей задачи чет там быстрее, я говорю что ты может бенчи не правильно приготовил
Маjко
Итераций вычисления там дохуя
Nikolay
https://github.com/DevHeap/collatz_conjecture/blob/bench/src/backend/collatz-rs/src/tests.rs#L135 внутри бенча парсится строка? :D
Маjко
Убери парсинг — 20нс прибавится, ничего это не меняет)
Маjко
Маjко
Убрал парсинг из обоих бенчей, поменялось ожидаемо нихуя
Nikolay
многовато в бенче других неизвестных, чтоб однозначный вывод сделать
Маjко
Например, это каких? :D
Nikolay
smallvec где-то юзается, где-то нет calc_sequence_for_number и calc_sequence_rs по-разному работают ща попрофайлим что конкретно там больше времени занимает
Сережа
Надо ещё забенчить реализацию на си и хаскеле, репу назвать зимняя специальная олимпиада
Nikolay
> calc_sequence_for_number неодинаково
Маjко
Одинакого
Маjко
> calc_sequence_for_number неодинаково
https://github.com/DevHeap/collatz_conjecture/blob/bench/src/backend/collatz-rs/src/tests.rs#L133
Маjко
Спешл обновил
Маjко
> calc_sequence_for_number неодинаково
Даже если не одинакого с учетом имплементации трейта Number, то тут как бы минус только если в сторону BigUint, ибо он не Copy и клонирования не бесплатные
Сережа
Разве копи и клон не отличаются только тем что клон надо явно вызывать?
Сережа
Я имею ввиду понятно, что это трейты и в клон можно винт форматировать, но это плохая практика
Сережа
Ок
Ма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ко
Нахер?
Vladimir
Нахер?
тогда и бенчи будут в стейбле, и графики крутые
Vladimir
criterion-rs
Vladimir
ща ссылку дам
Маjко
Кстать, есть что-нибудь умеющее строить график по коммитам?
Маjко
То есть затестить последние 10
Маjко
И выдать по ним график
Vladimir
https://github.com/japaric/criterion.rs
Маjко
Желательно конечно по встроенным бенчам
Vladimir
хз может у гита есть встроенная фигня, фича гит binary search
Маjко
ээ?
Маjко
асм автоматом включается на найтли https://github.com/paritytech/bigint/blob/master/build.rs#L14
Версия из мастера быстрее etcommon-bigint на треть, но все равно в 2 раза медленнее, разница без асма и с асмом в пределах погрешности Но поломали Display(((
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ко
Хм, можт щас прям и накатать