Консультация № 50386
27.07.2006, 21:44
0.00 руб.
0 5 1
Сравнивал быстродействие выполнения команды SetFocus в программах, написанных на Delphiи чистом WinAPI.ипользовал Edit control. В Delphi получилось примерно 1200 процессорных тактов,
в WinAPI - 200000.В моей программе очень важно быстродействие.
Неужели для WinAPI характерна такая скорость?

Обсуждение

Неизвестный
27.07.2006, 22:06
общий
Быть такого не может, чтобы на WinAPI было почти в 200 раз медленнее!А Вы как считали время выполнения? По скольким значениям усредняли?
Неизвестный
28.07.2006, 09:29
общий
Edit в дельфях и WinApi могут сильно различатся. Если их контрол самодельный (то есть не использует системный класс окна EDIT) то вполне возможно. Это не говорит об ущербности WinAPI или о крутости Delphi, потому что системная реализация делается универсальной.Для выяснения причины могу посоветовать посмотреть исходники класса TEdit. Если этот класс использует системный EDIT, то результат замера скорости явно неверный.И ещё странно- как быстродействие программы может зависеть от скорости работы SetFocus? Хотелось бы узнать- что это за программа такая!
Неизвестный
28.07.2006, 09:34
общий
Ещё вариант такой- в дельфях вместо SetFocus (в котором используется скорее всего SendMessage) в классе TEdit используется для эмуляции PostMessage с сообщениями WM_KILLFOCUS и WM_SETFOCUS, поэтому и получается, что SendMessage ждёт обработки сообщения а PostMessage - нет.
Неизвестный
28.07.2006, 17:19
общий
Разобрался. Прошу у всех прощения :(.В Delphi - 320000, в WinAPI - 200000.Спасибо !
Неизвестный
29.07.2006, 08:20
общий
это ответ
Здравствуйте, Bcd!
Вопрос конечно не совсем корректный в том что всё-таки программа на Delphi как никак всё равно переводится на Win API только с такими кодами что тормозов необерёшся!!!
p.s. Если нужно сделать что-нибудь не слишком быстродейственное и быстро то Delphi, а для нормальные продвинутые программы лучше писать на чистом Win API!!!
Форма ответа