Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ускорение копирования в память (memcpy), различными методами 
:(
    Опции темы
marcusmae
Дата 3.1.2008, 21:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Всем привет,

Встретил интересную статью по теме :

Optimizing Memcpy improves speed (by Michael Morrow)

В ней рассматриваются различные модификации стандартного побитового копирования памяти с целью увеличения производительности
  •  за счёт выравнивания указателей по адресам, кратным степеням двойки и копирования не байтами, а целыми блоками различного размера
  •  за счёт работы с кэшем
  •  за счёт тонкой настройки под такты процессора и шины (отдельная ссылка на код для процессора Intel XScale)
, приводятся сравнительные диаграммы на различных частотах процессора и размерах блоков.

Статья старая, но тема, по-моему, вечно актуальная smile В целом, концепт может быть востребован не только для копирования, а вообще для оптимизации произвольных циклических вычислительных операций с массивами.

Было бы интересно узнать Ваши мнения и experience в этой сфере.

Это сообщение отредактировал(а) marcusmae - 3.1.2008, 21:11


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
bsa
Дата 3.1.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Думаю, надо оптимизировать не столько скорость выполнения memcpy, сколько количество его вызовов. Скорость его выполнения ты вряд ли сможешь универсально увеличить (очень сомневаюсь, что разработчики libc ничего не оптимизировали), а вот сократить количество вызовов - вполне.
PM   Вверх
marcusmae
Дата 3.1.2008, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Цитата(bsa @  3.1.2008,  21:13 Найти цитируемый пост)
очень сомневаюсь, что разработчики libc ничего не оптимизировали


bsa, в том-то и дело, что в самой общей постановке задачи memcpy "скопируй отсюда сюда стока-то" нечего оптимизировать. Выигрыш появляется, если предъявить определённые требования к аргументам. В статье показано, что попытка универсиализировать memcpy, например, за счёт отдельной работы с "хорошим" промежутком и "плохими" хвостами, ничего не даёт.


Это сообщение отредактировал(а) marcusmae - 3.1.2008, 21:21


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
jonie
Дата 3.1.2008, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



копирование можно делать по разному...
можно байтами; можно DWORD-ми, и добивать остатки байтами; можно юзать mmx и другие раширения CPU....



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
SergeCpp
Дата 3.1.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



Рекомендую книгу Криса Касперски — Техника оптимизации программ. Эффективное использование памяти

Там этот вопрос рассмотрен детально весьма

PM MAIL WWW ICQ   Вверх
marcusmae
Дата 3.1.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Цитата(SergeCpp @  3.1.2008,  21:48 Найти цитируемый пост)
Рекомендую книгу Криса Касперски — Техника оптимизации программ. Эффективное использование памятиТам этот вопрос рассмотрен детально весьма


SergeCpp, спасибо!


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
DrHex
Дата 4.9.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



Криса Касперски — Техника оптимизации программ - а вот материалы то старые.

В студии очень зорошо реализована данная функция.

Моно еще попробывать mmx расширение.
--------------------
google.com и это все.
PM MAIL   Вверх
MAKCim
Дата 5.9.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(marcusmae @  3.1.2008,  21:18 Найти цитируемый пост)
в том-то и дело, что в самой общей постановке задачи memcpy "скопируй отсюда сюда стока-то" нечего оптимизировать

ты не прав
советую посмотреть сорсы memcpy ;)
там не банальный movs


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bsa
Дата 6.9.2009, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(MAKCim @ 5.9.2009,  08:58)
советую посмотреть сорсы memcpy ;)
там не банальный movs

Угу. Там есть и "выравнивание указателей", и "копирование блоками"...
PM   Вверх
Artemon
Дата 6.9.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



в 99,9% узкое место в алгоритме, а не в ф-ии копирования памяти.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0914 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.