давай сначала разберемся с тем что ты понимаешь о чем спрашиваешь . пример покажи ? что вызываешь в каком контексте. что то типа того смотрел ?Пожалуйста, авторизуйтесь для просмотра ссылки.
и что ? программисту пофигу на язык. нормальному. язык лишь синтаксис для выполнения задачи. какая разница какой там язык стоит в статье если там есть механизм взаимодействия
Обычный вызов:давай сначала разберемся с тем что ты понимаешь о чем спрашиваешь . пример покажи ? что вызываешь в каком контексте. что то типа того смотрел ?Пожалуйста, авторизуйтесь для просмотра ссылки.
это тонкая олтимизация. через какое то время сам проверю и отпишу . думаю, второй аккуратнее работает с памятью, но надо потестить. будет время гляну.Обычный вызов:
инключ стандартной либы (если нужно) и вызов например FreeLibrary(hLibModule);
Через прототип + GetProcAddress
GetProcAddress(GetModuleHandleA("Kernel32.dll"), " FreeLibrary");
Еще слышал про хеширование и вызов по хешу, но знаю про это мало.
Что мне надо?
Знать наиболее оптимальный вариант вызова подобных функций из расчёта занимаемой памяти.
Т.е обычный вызов занимает столько то байт, через прототип столько то и так далее
Второй вариант данный момент использую, 9 винапи функций, не использует никаких библиотек вроде <Windows.h>.это еще почитайПожалуйста, авторизуйтесь для просмотра ссылки.
это тонкая олтимизация. через какое то время сам проверю и отпишу . думаю, второй аккуратнее работает с памятью, но надо потестить. будет время гляну.
Под весом и памятью я имел ввиду уменьшение занимаемого места на диске, ну типо вес проги такой-то, этот вес формируется исходя из кода, компилятора и тд.На твой вопрос невозможно ответить, потому что твой вопрос либо поставлен нерпавильно, либо ты сам не понимаешь что пишешь.
Про какую память ты пишешь? Про размер кода? Про размер Кучи или стека во время вызова?
Вызов винапишной функции это по сути разыменовывание указателя из таблицы импорта и вызов соответствующего кода по полученному адресу с передачей параметров в случае динамической линковки.
Либо в ручную загрузка необходимой либы и получение адреса нужной функции.(Конечно это на пару десятвов байт займет больше места в коде и стеке)
Что тут можно оптимизировать?
Если конечно беды с бошкой можно вызывать более низкоуревневые апи, наприер вместо Sleep вызывать SleepEx.
Если совсем все плохо с бошкой можем вызвать NtDelayExecution из Ntdll.
Если мы лежим в дурке можем сами сделать системное прерывание 80h с eax=34h.
Как раз нет, чем грубже ты спускаешьcя к прикладному уровню, тем больше у тебя действий. Можешь сам посмотреть через сколько библиотек редиректится вызов того же Sleep и сколько кода выполняется от вызова Sleep до системного прерывания. В то время когда мы можем выполнгить всего 2 инструкции:За пример спасибо, я в принципе думал насчёт спуска ближе к машинному коду, он явно занимает меньше места.
используй loadlibrary брат мой и будет тебе счастье.это еще почитайПожалуйста, авторизуйтесь для просмотра ссылки.
это тонкая олтимизация. через какое то время сам проверю и отпишу . думаю, второй аккуратнее работает с памятью, но надо потестить. будет время гляну.
а ну я понял. не такой фигней не страдал никогда . под мои задачи во главе угла всегда была стабильность а не размер ,)Под весом и памятью я имел ввиду уменьшение занимаемого места на диске, ну типо вес проги такой-то, этот вес формируется исходя из кода, компилятора и тд.
Я же хочу оптимизировать код, а точнее вызовы winapi с целью уменьшение занимаемого веса.
Надеюсь ты правильно меня понял.
За пример спасибо, я в принципе думал насчёт спуска ближе к машинному коду, он явно занимает меньше места.
Одно другому не мешает)под мои задачи во главе угла всегда была стабильность а не размер ,)
ну нет. в большинстве случаев, оптимизация всегда выбор между чем то одним. или ты выкручиваешь в одну сторону или в другую или в третью. но никак не во все сразу.Одно другому не мешает)
Ну в моём случае потеря нескольких десятков миллисекунд не проблема, программа то маленькаяну нет. в большинстве случаев, оптимизация всегда выбор между чем то одним. или ты выкручиваешь в одну сторону или в другую или в третью. но никак не во все сразу.
мы говорим про стратегию . а не причесывание кода )
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz