Почему VS2010 не инлайнит memcpy?
От: PolA  
Дата: 27.05.10 12:38
Оценка:
В VS2003 простые функции по работе с памятью (memcpy, memset и др.) всегда инлайнились в Асм-код, а в VS2010 — нет, и они вызываются из MSVCR100.dll.
Вопрос — можно ли VS2010 заставить их инлайнить?
P.S. Перепробовал все настройки компилятора — глухо, он тупо вызывает memcpy из DLL, даже если нужно скопировать несколько байт...
Re: Почему VS2010 не инлайнит memcpy?
От: CreatorCray  
Дата: 27.05.10 12:57
Оценка:
Здравствуйте, PolA, Вы писали:

PA>В VS2003 простые функции по работе с памятью (memcpy, memset и др.) всегда инлайнились в Асм-код, а в VS2010 — нет, и они вызываются из MSVCR100.dll.

PA>Вопрос — можно ли VS2010 заставить их инлайнить?
PA>P.S. Перепробовал все настройки компилятора — глухо, он тупо вызывает memcpy из DLL, даже если нужно скопировать несколько байт...

В 2003 по умолчанию рантайм статический.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: Почему VS2010 не инлайнит memcpy?
От: PolA  
Дата: 27.05.10 13:02
Оценка:
Ну, тогда может подскажете, как его включить здесь, в VS2010?
Re[3]: Почему VS2010 не инлайнит memcpy?
От: CreatorCray  
Дата: 27.05.10 13:08
Оценка: 1 (1)
Здравствуйте, PolA, Вы писали:

PA>Ну, тогда может подскажете, как его включить здесь, в VS2010?


/MT вместо /MD
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Почему VS2010 не инлайнит memcpy?
От: PolA  
Дата: 27.05.10 13:14
Оценка:
Премного благодарен.
Re: Почему VS2010 не инлайнит memcpy?
От: Serg27  
Дата: 28.05.10 05:35
Оценка:
Здравствуйте, PolA, Вы писали:

PA>В VS2003 простые функции по работе с памятью (memcpy, memset и др.) всегда инлайнились в Асм-код, а в VS2010 — нет, и они вызываются из MSVCR100.dll.

PA>Вопрос — можно ли VS2010 заставить их инлайнить?

В VS2003 для этого всегда можно было использовать #pragma intrinsic
Вроде бы и в VS2010 тоже самое — http://msdn.microsoft.com/es-es/library/tzkfha43.aspx
Re[2]: Почему VS2010 не инлайнит memcpy?
От: PolA  
Дата: 30.05.10 12:08
Оценка:
Здравствуйте, Serg27, Вы писали:

S>В VS2003 для этого всегда можно было использовать #pragma intrinsic

S>Вроде бы и в VS2010 тоже самое — http://msdn.microsoft.com/es-es/library/tzkfha43.aspx
Увы, не получается.

Вот конкретная ситуация — есть код вида
for (int i = 0; i < n; i++)
        pBuf[i] = 0;

Очевидно, что это обнуление буфера, но(!) при любых настройках компилятора он вызывает _memset из MVCRT100.DLL,
даже если буфер длиной 16 байт. Вопрос — как заставить компилятор не юзать memcpy, memset и пр.?
В VS2003 я даже об этом не задумывался, а тут уже который день бьюсь — пусто.

P.S. /MD на /MT менял — все то же самое.
зигахъ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.