inv2004 Dev Blog
309 subscribers
76 photos
4 videos
75 links
Он всегда был не прочь подкрепиться. Кроме того, он был поэт
Download Telegram
Спецолимпиада. 1/3

Было много дел, но тут, как гром среди ясного неба, на форуме прозвучало "вот тут бенчат разные языки https://github.com/jinyus/related_post_gen". В глубине души, понимая весь бред таких бенчей, я всё же не смог устоять чтобы не зайти по ссылке и не запустить разок ... потом второй ... очнулся через пару часов

Стоит оговориться о бенче, он довольно тупой - с ходу стало понятно, что близко к k-nucleotide, который я когда-то писал на Rust: https://t.me/inv2004_dev_blog/24 - хеш на хеше и тд. В итоге простая замена на xxhash дала заметный, но недостаточный, прирост.

Кстати, стоит упомянуть любимый (только по работе, конечно) Go, который обогнал всех с большим запасом + один из первых показал мультитредовую версию, где тоже затащил себя на первое местно.

Поначалу, была мысль забить, но, случайно заметил как Rust Evangelism Strike Force очень активно шлют PR за PR'ом. Nim при этом, кажется, даже в десятку не попадал, хотя это уже была не черновая версия. "Что за дела", подумал я, и достал valgrind, который показал какой-то eqcopy, занимающийся какими-то аллокациами.

valgrind конечно, крут, ещё бы - по сути единственный несемплирующий профилировщик, но стек в нём видно куда хуже чем в perf. Покопавшись в сгенерированном коде на C (за что Nim и нравится, хотя многие считают недостатком), стало понятно что Nim копирует целый вектор при чтении, что, конечно, полный провал. Удивило почему [] из хеша не умеет одалживать данные по указателю. В прочем, удивление длилось не долго - никаких больших проблем с этим нет - просто забыли проставить всего одно слово - lent. Поставил - полетело. Есть всё же польза от бенчей

...

#bench #rust #nim #go
👍10