Eu tenho o seguinte array de caracteres multidimensional. Eu preciso primeiro XOR
um dos arrays com o array de máscaras e depois AND
o resultado com o outro array. Qual é o caminho mais rápido para implementá-lo?
Nota: os arrays de caracteres podem ter até 20 KB de tamanho.
unsigned char test1[2][2] = { { "a","b" },{ 0 } };
unsigned char test2[2][2] = { { 0 },{ "O","S" } };
unsigned char mask[2][2] = { 0 };
Respostas:
0 para resposta № 1algo assim pode ser rápido:
int cnt = sizeof(mask)/sizeof(unsigned char)
while(cnt>0)
{
*((unsigned char*)test1+cnt) ^= *((unsigned char*)mask+cnt);
*((unsigned char*)test1+cnt) &= *((unsigned char*)test2+cnt);
cnt--;
}
Há apenas uma vez o caminho através das matrizese você move apenas 3 ponteiros que podem ser bem otimizados pelo compilador. Para ser MAIS eficiente, devemos fazer alguns testes e ver a saída da montagem. TI também depende da arquitetura que você usa (X86, ARM, AVR, PIC, ...)