Բնականաբար XOR-ը ավելի արագ կաշխատի, որովհետև 3 բիտային գործողություն անելը ավելի արագ է քան 3 գումարում/հանումը:
Մի այսպիսի հարց` ենթադրենք ունեմ m[10000][10000] մատրից: Հերթով արժեք եմ տալիս(կամ արժեք վերցնում) էլեմենտներին`
for(i = 0; i < 10000; i++)
{
for(j = 0; j < 10000; j++)
{
m[i][j] = m[i][10000 - j - 1] * 2; // Օրինակի համար
}
}
Նույն բանը` երկրորդ տարբերակով
Այժմ հարցը` ինչի համար երկրորդ տարբերակը ավելի արագ չի աշխատում (ոնց որ մի բան էլ ավելի դանդաղ):for(i = 0; i < 10000; i++)
{
int* p = m[i];
for(j = 0; j < 10000; j++)
{
p[j] = p[10000 - j - 1] * 2;
}
}
Էջանիշներ