Шаблон для быстрого копирования в C - PullRequest
3 голосов
/ 11 сентября 2009

Однажды я увидел шаблон программирования (не дизайн), как реализовать быструю копию буферов. Он включал в себя чередованную петлю и переключатель. Дело в том, что большую часть времени он копировал 4 байта, только последние несколько байтов буфера были скопированы с использованием меньших типов данных.

Может кто-нибудь сказать мне, как это называется? Он назван в честь человека. Это сделано в C, и вывод компилятора почти оптимален.

Ответы [ 4 ]

12 голосов
/ 11 сентября 2009

Используйте memcpy(), это стандартный, портативный и во многих случаях также хорошо оптимизированный.

11 голосов
/ 11 сентября 2009

Похоже, вы думаете о устройстве Даффа .

2 голосов
/ 11 сентября 2009

Это называется устройство Даффа, см. На Википедия

Если вы хотите реализовать / использовать быстрое копирование, то сначала посмотрите на реализацию вашего компилятора; он может использовать гораздо более сложный алгоритм с использованием расширенных функций вашего процессора. Например, компиляторы Intel имеют довольно сложные версии.

2 голосов
/ 11 сентября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...