Самая эффективная замена memcpy

Рейтинг: 1Ответов: 1Опубликовано: 24.01.2011

Нужно копировать большую область памяти, не используя string.h. Какой код, заменяющий memcpy, работает предельно эффективно по скорости? Первое, что приходит на ум, - это

char *destination, *source;

for (int i = 0; i < length; i++)
    destination[i] = source[i];

Если это не самый быстрый вариант, то как ускорить его на C без ассемблера?

Ответы

▲ 4Принят

Это не самый эффективный метод, но и не самый плохой. Очевидно, что можно копировать быстрее, если учитывать специфику железа памяти, а именно, тот факт, что память читается блоками, а не байтами или резмерами регистра.

Можно также почитать разные мелкие манипуляции по оптимизации самого цикла и индексации: http://www.danielvik.com/2010/02/fast-memcpy-in-c.html.