Size: a a a

2021 July 06

SZ

Sergey Zhmylove in Modern::Perl
Как твой вариант на си-то написать, чтобы было быстро? :)
источник

SZ

Sergey Zhmylove in Modern::Perl
Бенч варианта table[arg] и switch(arg) показал, что switch медленнее.

Код писал на коленке: pastebin.com/WrPaU5UF
источник

AS

Alexey Stavrov in Modern::Perl
Проведите тесты на си c -O3
источник

SZ

Sergey Zhmylove in Modern::Perl
Строку #7 видел, не?
источник

AS

Alexey Stavrov in Modern::Perl
Не понял
источник

AS

Alexey Stavrov in Modern::Perl
но не тогда, когда они в кеше + в процах есть prefetch
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
x1 = x & 0x55; x2 = x & 0xAA;
return (x1 << 1) | (x2 >>1);
както так
источник

AS

Alexey Stavrov in Modern::Perl
Ну вот вижу, что одну реализацию написали на си. Давайте вторую
источник

AS

Alexey Stavrov in Modern::Perl
Получается 256 байт - это 4 кеш линии
источник

A

Alexander in Modern::Perl
Эх, сейчас бы в интерпретируемых языках байты с тактами считать
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
а ассемблер x86 сейчас интепретируемый или нет?
источник

SZ

Sergey Zhmylove in Modern::Perl
func1 и func3 -- через честные call, func2 и func4 -- заинлайнились,
вариант с косвенной адресацией получается быстрее.
Исходники и результаты:
pastebin.com/vMqstNEH
источник

SZ

Sergey Zhmylove in Modern::Perl
*естественно, чиселка перед (%rdi) будет у всех разная :)
источник

AP

Anton Petrusevich in Modern::Perl
-O3 -march=native
источник

AS

Alexey Stavrov in Modern::Perl
Ага, а мы можем повториить всё это, сделав так, чтобы:
1. данных в массиве было L3 * 10 и делать запросы последовательно
2. данных в массиве было L3 * 10 и делать запросы рандомно по массиву
?
L3 - это обём кеша L3

Это всё просторади интереса, что будет получаться
источник

AP

Anton Petrusevich in Modern::Perl
ситуация, конечно, заметно другая, что данных всего 256 байт и на современных десктопных процах они раз-два и в L1, откуда им просто не вымыться на десктопе за несколько секунд бенчмарка
источник
2021 July 07

SZ

Sergey Zhmylove in Modern::Perl
Увы, не сможем, т.к. по условию задачи там uint8_t
источник

AP

Anton Petrusevich in Modern::Perl
да, я не понял этого прикола, он весь смысл задачи к фигам сводит
источник

MG

Mr. Good in Modern::Perl
я вообще тут половину разговоров не понимаю, но очень интересно:)
источник

W

Warstone in Modern::Perl
Не берите в голову. Они меряются. Пока-что все проигрывают, так как мерение очень очевидно.
источник