|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
Подскажите пожалуйста аналог функции RtlMoveMemory только быстрее29.03.2023, 12:32. Показов 2882. Ответов 49
Метки нет (Все метки)
Здравствуйте! Мне часто приходится копировать память, в основном это строковые данные переменной длинны.
Всем известно, что функции GeMem 1-8 работают гораздо быстрее, чем CopyMemory. Но нет такой функции для переменной длины. Вы конечно, может будете смеяться, но я при копировании небольших строк переменной длины использую даже код такой:
0
|
||||||
| 29.03.2023, 12:32 | |
|
Ответы с готовыми решениями:
49
алгоритм функции RtlMoveMemory Win32API n Подскажите аналог функции SetConsoleCursorPosition Подскажите аналог функции StrCmpICA |
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 29.03.2023, 13:04 [ТС] | ||
|
Точно знаю что lstrcpyW медленнее чем CopyMemory, проверял уже
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||
| 29.03.2023, 13:11 [ТС] | |||
|
Добавлено через 2 минуты
0
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 29.03.2023, 13:14 [ТС] | ||
|
0
|
||
|
769 / 286 / 17
Регистрация: 21.01.2023
Сообщений: 456
|
|||||||
| 29.03.2023, 14:35 | |||||||
Обрати внимание, Src и Dest в непривычном порядке. Если объявить через tlb, будет ещё быстрее.
1
|
|||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 29.03.2023, 17:01 [ТС] | ||
|
Добавлено через 2 часа 23 минуты Mikle Quits, а вы сравнивали скорости RtlMoveMemory и вашей COPY_MEMORY? На каком языке вы написали библиотеку?
0
|
||
|
769 / 286 / 17
Регистрация: 21.01.2023
Сообщений: 456
|
|
| 29.03.2023, 20:56 | |
|
Сравнивал (давно, когда писал). На коротких фрагментах у меня был выигрыш.
Писал на C++ 2008 Express, но там Naked ассемблерная функция. Добавлено через 2 часа 13 минут Хм... сейчас сравнил - совпадает с RtlMoveMemory по скорости до долей процента. Видимо, в x64 системе бутылочное горлышко где-то не здесь.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||
| 30.03.2023, 01:37 [ТС] | |||
|
Добавлено через 4 часа 37 минут Зато нашёл на другом форуме что-то про пересечение блоков, что это такое вообще, ты писал на другом форуме "__vbaCopyBytes будет быстрее т.к. не проверяет блоки на пересечение." Фиг его знает я плохо знаю всё это. Ты наверное пользуешься какой-то специальной программой для того чтобы смотреть на эти блоки оперативной памяти там в гексодах скорее всего по адресам, я не знаю вообще не шарю, в процесс хакере заколебёшься искать то что надо найти в памяти процесса например.
0
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 30.03.2023, 11:25 [ТС] | |
|
Зачем уважаемый The trick в своих кодах называет memcpy вот так:
Private Declare Sub memcpy Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Я этого так и не понял. Обман получается. Добавлено через 58 секунд Искал как объявить настоящее memcpy так и не нашёл. Придётся в MSDN лезть.
0
|
|
|
Модератор
|
||||||
| 30.03.2023, 11:31 | ||||||
|
Добавлено через 3 минуты
0
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 30.03.2023, 11:40 [ТС] | |
|
0
|
|
|
Модератор
|
|
| 30.03.2023, 11:47 | |
|
по теме memcpy из msvcrt уже векторные инструкции поддерживает что теоретически может повысить скорость. Еще больше повысить скорость можно переключением в 64 битный режим и выполнение инструкции оттуда. Правдо само переключение тоже время будет занимать, но для больших блоков это даст выигрыш.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||
| 30.03.2023, 11:53 [ТС] | |||
|
Я если честно думал что все API работают на одном ядре процессоре и что все они 32-битные. Все API до единой.
Добавлено через 1 минуту Добавлено через 44 секунды
0
|
|||
|
Модератор
|
|||
| 30.03.2023, 11:59 | |||
|
0
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 30.03.2023, 12:01 [ТС] | |
|
The trick, решил протестировать __vbaCopyBytes, чтобы не писать самому проект, взял по быстрому переделал твой проект prjGetMemOptimize by The Trick и добавил туда ещё одну кнопку для CopyBytes и написал и что ты думаешь...
Результат меня шокировал CopyBytes медленнее на целую секунду что в циклах работы по указателю что по прямой передаче
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 30.03.2023, 12:03 [ТС] | ||||||
|
Объявлял вот так вот:
1
|
||||||
| 30.03.2023, 12:03 | |
|
Помогаю со студенческими работами здесь
20
Подскажите пожалуйста только начал изучать WinApi
Подскажите пожалуйста можна ли убрать то что в середине, оставить только контур окружности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|