Ну что же. Выполняем /r/ Stranger. Оптимизация работы с памятью. Стандартные функции C/C++.
Оптимизация работы memcpy.
Копирование памяти через промежуточный буфер ликвидирует все слабые стороны алгоритма штатной функции memcpy, значительно увеличивая тем самым ее производительность.
Ex.
Code
for (a = 0; a < count; a += subBLOCK_SIZE)
{
for (b = 0; b < subBLOCK_SIZE; b += BRUST_LEN)
tmp += *(int *)((int)src + a + b);
memcpy((int *)((int)dst + a ), (int *)((int)src + a), subBLOCK_SIZE);
}
Оптимизация memmove.
В сравнении со стандартной функцией memmove() эта работает быстрее на 15% - 20%.
Code
int __MyMemMoveX(char *dst, char *src, int size)
{
char *p1, *p2;
int a, x = 1;
int delta;
delta = dst - src;
if ((delta < 1)) return -1;
for (a = size; a > delta; a -= delta)
memcpy(dst + a - delta, src + a - delta, delta);
return 0;
}
Оптимизация memcmp.
Code
void *__cdecl _memccpy (void *dest, const void *src, int c, unsigned count)
{
while (count && (*((char *)(dest = (char *)dest + 1) - 1) =
*((char *)(src = (char *)src + 1) - 1)) != (char)c) count--;
return (count ? dest : NULL);
}
Технические обоснования писать лень, т.к. я не трезв. Могу обосновать в IRL.
Все взято из древних загашников прожжоного жизнью тролля, лжеца и девственника aka eXceed