|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
Подскажите пожалуйста аналог функции RtlMoveMemory только быстрее29.03.2023, 12:32. Показов 2838. Ответов 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
|
||
|
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
|
|||||||
| 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
|
||
|
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 397
|
|
| 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
Подскажите пожалуйста можна ли убрать то что в середине, оставить только контур окружности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|