Ошибка запуска многопользовательского проекта Saas Angular Client

Мне стало скучно и приурочено к миллиарду итераций трех подходов. Компилятор - gcc-O3. CPU - это то, что они вносят в первый MacBook Pro.

Самый быстрый из них следующий: 3,7 секунды:

static unsigned char wordbits[65536] = { bitcounts of ints between 0 and 65535 };
static int popcount( unsigned int i )
{
    return( wordbits[i&0xFFFF] + wordbits[i>>16] );
}

Второе место относится к одному и тому же коду, но поиск 4 байта вместо 2 половинных слова. Это заняло около 5,5 секунд.

Третье место относится к подходу с боковым смещением, который занял 8,6 секунды.

Четвертое место занимает GCC __builtin_popcount (), на позорный 11 секунд.

Подсчет с использованием одного бита в момент времени был медленным, и мне стало скучно ждать, пока он завершится.

Итак, если вам интересно прежде всего, используйте первый подход. Если вам все равно, но недостаточно, чтобы потратить на нее 64 КБ ОЗУ, используйте второй подход. В противном случае используйте читаемый (но медленный) подход с одним битом на время.

Трудно представить себе ситуацию, когда вы захотите использовать подход, основанный на бит-бит.

Изменить: похожие результаты здесь .

0
задан Simply Ged 2 January 2019 в 05:54
поделиться