Маjко
Но там разброс дикий
պլհկ
чекните там
պլհկ
https://play.rust-lang.org/?gist=343bae5a710ce2f4ae0e4ed835c58e24&version=stable
Cuno
Dmitry
дайте проект целиком
Dmitry
раст это вам не хаскель и не си, однго файлика недостаточно
Маjко
rustc -O file.rs
Dmitry
dmz@zen ~/tmp/bsfuck $ time ./playground < ./49zGQ6Zt.txt > /dev/null
real 0m1.410s
user 0m1.404s
sys 0m0.004s
Dmitry
лучший си сейчас 1.00x
Alexander
лучший си разбирает пробелы \r\n и не делает копирований, выделяет память только под вектора длин и отступов
Loyd
Не видел сишный вариант
Loyd
Но я правильно понимаю, что там работа не с ютф?
Anonymous
https://vk.com/golang
Anonymous
вы только посмотрите на них
Vlad
Хмм, этот unlikely действительно дает измеримый эффект? На SO пишут, что нынче динамический анализ и все такое, и все эти хинты старомодные просто игнорятся
Alexander
багета?
Alexander
а много вообще вакансий по расту?
Serg
Alexander
wow
Nik
Safort
Safort
Можно свой паблик запилить, или ты про что?
Cuno
Сережа
Утверждения, с границами применимости, лучше категоричных утверждений.
Cuno
Это хинт не процессору, а компилятору. Бенч можно написать, но делать я этого, конечно же, не буду.
Anonymous
Vlad
Anonymous
random number generator
Vlad
Vlad
Короч видно я зря не читал половину треда
Anonymous
Anonymous
он переставляет код
Vlad
А, так вот а чем дело. Неужели это на что-то влияет, господи...
Marat
Cuno
Cuno
branch predictor не всесилен
Anonymous
Anonymous
Vladimir
Vladimir
Ну вообще это хинт бренчпредиктору
Vladimir
Только не напрямую
Vladimir
Как по такому компилятор его реализовывать будет?
Vladimir
If rnd%1000== 0?
Vlad
Vlad
Можно компилировать 2 способами: jump-if-true и jump-if-false
Vladimir
По твоему*
Vlad
...
Vladimir
И? Это не хинт предиктору?
Vladimir
Подумай сам, как от реализации жампа будет зависеть конечная производительность, если предиктор всемогуч?
Vlad
Ну вот и я как-то так думал
Vlad
И branch prediction не должен всех спасти?
Vladimir
Так я твою логику и оспариваю
Vladimir
Не пойму чего ты смирился после того как тебе про жамп сказалм
Vlad
Потому что если брэнчпредиктор вообще нах отсутствует (= у нас полный рандом), условный переход без джампа должен быть быстрее? Хотя это тоже вопрос, почему так. Но примем за данность пока. Мне работать надо кагбэ, потому и смирился =D
Сережа
что такое условный переход без джампа? условный переход без перехода?
Vlad
Ну, имеется в виду случай, когда мы не прыгаем на l0, а исполняем следующую за je инструкцию
cmp eax ebx
je l0
... ; likely branch
jmp l1
l0: ... ; unlikely branch
...
l1: ...
Vlad
Хотя хрен поймешь, на l1-то все равно надо прыгнуть
Сережа
если все попадает в кэш инструкций по идее разницы нету?
Vlad
Конечно влияет. jump ломает конвеер.
Vlad
Утверждается, что на что-то таки влияет
Vlad
Короч выглядит странно, как по мне
Vladimir
Сережа
l0: ... ; unlikely branch
...
jump l1
cmp eax ebx
je l0
... ; likely branch
l1: ... ; after likely branch
Поцоны я придумал супер-мега оптимизацию для процессоров без бранч предиктинга
Vlad
Кстати мб оно так и должно записываться =D
Сережа
единственное, где думают о бранчпредиктинге это геймдев класса ААА, да и то вряд ли
Vlad
Бля, я этот асм из головы достал совершенно. Над проверить что этот unlikely на самом деле делает
Сережа
в худшем случае уменьшают количество ифов, и то только когда навиное решение не устраивает
Dmitry
в ядре думают
Dmitry
там всё пересыпано этими хинтами
Alex
ага, 5% программирования
Alex
ну ну
Alex
поэтому то они так фичи пилят долго