Notice: file_put_contents(): Write of 17752 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50
Блог*@dereference_pointer_there P.8430
DEREFERENCE_POINTER_THERE Telegram 8430
#prog #rust хайлайты:

Переписали реализацию двоичного поиска. Эти изменения связаны с тем, что ветвление по результату сравнения в двоичном поиске плохо сочетаются с предсказателем ветвлений — они, за вычетом вырожденных случаев, плохо предсказываются, и потому приводят к снижению производительности из-за регулярных сбросов пайплайнов процессора. В данном PR количество непредсказываемых ветвлений снизили.

Именно, во-первых, для ветвления по результату сравнению используют специально добавленный для этого интринсик, который заставляет кодген использовать условные перемещения (cmov) вместо условных прыжков. Во-вторых, в теле цикла теперь нет раннего возврата в случае, если элемент считается искомым согласно предъявленному предикату. Да, это увеличивает число итераций, но взамен убирает ещё одно плохо предсказываемое ветвление и делает число итераций зависимым только от длины слайса, т. е. хорошо предсказываемым. В качестве бонуса LLVM теперь в состоянии полностью развернуть цикл для поиска по слайсам со статически известной длиной.

Бенчмарки консистентно в разных тестах и на разных процессорах подтверждают, что поиск ускорился.
🔥20👍4🥰1



tgoop.com/dereference_pointer_there/8430
Create:
Last Update:

#prog #rust хайлайты:

Переписали реализацию двоичного поиска. Эти изменения связаны с тем, что ветвление по результату сравнения в двоичном поиске плохо сочетаются с предсказателем ветвлений — они, за вычетом вырожденных случаев, плохо предсказываются, и потому приводят к снижению производительности из-за регулярных сбросов пайплайнов процессора. В данном PR количество непредсказываемых ветвлений снизили.

Именно, во-первых, для ветвления по результату сравнению используют специально добавленный для этого интринсик, который заставляет кодген использовать условные перемещения (cmov) вместо условных прыжков. Во-вторых, в теле цикла теперь нет раннего возврата в случае, если элемент считается искомым согласно предъявленному предикату. Да, это увеличивает число итераций, но взамен убирает ещё одно плохо предсказываемое ветвление и делает число итераций зависимым только от длины слайса, т. е. хорошо предсказываемым. В качестве бонуса LLVM теперь в состоянии полностью развернуть цикл для поиска по слайсам со статически известной длиной.

Бенчмарки консистентно в разных тестах и на разных процессорах подтверждают, что поиск ускорился.

BY Блог*


Share with your friend now:
tgoop.com/dereference_pointer_there/8430

View MORE
Open in Telegram


Telegram News

Date: |

Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu. Concise Select “New Channel” The court said the defendant had also incited people to commit public nuisance, with messages calling on them to take part in rallies and demonstrations including at Hong Kong International Airport, to block roads and to paralyse the public transportation system. Various forms of protest promoted on the messaging platform included general strikes, lunchtime protests and silent sit-ins. You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether.
from us


Telegram Блог*
FROM American