Мне было интересно, для сценария, где rand() достаточно, т. е. нет необходимости использовать mt19937 и т. д., следует ли предпочесть rand() % range или rand() & range?< /p>
Пытаясь разобраться в этом, я провел простой тест и обнаружил, что схема AND стабильно быстрее схемы MOD в 1,2 раза. Это разумная приблизительная цифра? зависит ли это от платформы/оборудования/языка/и т. д.?
Код контрольного теста вставлен ниже:
#include
#include
#include
void timer( void(*func)() )
{
LARGE_INTEGER frequency; // ticks per second
LARGE_INTEGER t1, t2; // ticks
double elapsedTime;
// get ticks per second
QueryPerformanceFrequency(&frequency);
// start timer
QueryPerformanceCounter(&t1);
// do something
func();
// stop timer
QueryPerformanceCounter(&t2);
// compute and print the elapsed time in millisec
elapsedTime = (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart;
printf("%f ms.\n", elapsedTime);
}
void testMOD()
{
volatile int arr[256] = { 0 };
for (int i = 0; i < 65535; i++) {
int idx = i % 256;
arr[idx] += int( rand() % 255 );
}
}
void testAND()
{
volatile int arr[256] = { 0 };
for (int i = 0; i < 65535; i++) {
int idx = i % 256;
arr[idx] += int(rand() & 0xFF);
}
}
int main(void)
{
printf("Testing MOD...\n");
timer(&testMOD);
printf("Testing AND...\n");
timer(&testAND);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -is-better
Rand() % 256 против rand() и 0xFF, чья производительность лучше? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Производительность Clang's _bitint (256) против Boost Multipricision int256_t
Anonymous » » в форуме C++ - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно воспроизвести эффект mallopt(M_PERTURB, 256) с MALLOC_PERTURB_=256.
Anonymous » » в форуме C++ - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-
-
-
ValueError:Tensor("входные данные:0", shape=(None, 256, 256, 3), dtype=uint8)
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-