Skip to content

IoaNNUwU/poly-bench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

poly-bench

Бенчмарк для видео

Для запуска бенчмарков:

cargo bench

Результаты:

Для вектора из 2 млн компонентов реализация через match на моём компьютере занимает 7.62, что в 2 раза быстрее динамического варианта, но с добавлением динамического компонента компилятор не может оптимизировать это и реализация через enum становится в 6 раз быстрее динамического варианта.

Running benches/dyn_vs_enum.rs (target/release/deps/dyn_vs_enum-f1a43a767e5f50db)

Динамическая реализация с добавлением пользователем своих собственных типов:

╭─────────────────────────────┬─────────┬───────────┬───────────┬───────────┬───────────╮
│ benchmarkargsfastestmedianmeanstddev │
├─────────────────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_dynamic_impl_with_new20000424.17 µs426.88 µs428.22 µs4.58 µs │
├─────────────────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_dynamic_impl_with_new2000004.21 ms4.27 ms4.27 ms30.27 µs │
├─────────────────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_dynamic_impl_with_new200000041.80 ms42.60 ms42.61 ms600.14 µs │
╰─────────────────────────────┴─────────┴───────────┴───────────┴───────────┴───────────╯

Динамическая реализация без добавления пользователем своих собственных типов:

╭──────────────────────────────────┬─────────┬───────────┬───────────┬───────────┬───────────╮
│ benchmarkargsfastestmedianmeanstddev │
├──────────────────────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_dynamic_impl_with_existing20000104.20 µs108.20 µs111.61 µs10.18 µs │
├──────────────────────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_dynamic_impl_with_existing2000001.20 ms1.23 ms1.26 ms69.29 µs │
├──────────────────────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_dynamic_impl_with_existing200000012.64 ms13.17 ms13.25 ms374.70 µs │
╰──────────────────────────────────┴─────────┴───────────┴───────────┴───────────┴───────────╯

Реализация через match:

╭─────────────────┬─────────┬───────────┬───────────┬───────────┬───────────╮
│ benchmarkargsfastestmedianmeanstddev │
├─────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_enum_impl2000029.81 µs34.30 µs36.30 µs6.47 µs │
├─────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_enum_impl200000657.47 µs700.42 µs716.38 µs58.37 µs │
├─────────────────┼─────────┼───────────┼───────────┼───────────┼───────────┤
│ bench_enum_impl20000007.29 ms7.59 ms7.62 ms188.16 µs │
╰─────────────────┴─────────┴───────────┴───────────┴───────────┴───────────╯

Releases

No releases published

Packages

No packages published

Languages