Как найти хендл контрола

Обсуждения по программированию для ОС Windows безотносительно используемого языка программирования. Windows NT, Win32, Windows API, ядро и драйверы.
Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 02.12.2012 (Вс) 12:24

ger_kar писал(а):Есть. Уже есть и решения других производителей для программирования под платформу Net. Тот же Delphi

Delphi - это паскаль. И фортран кажется есть. И ещё куча всего. Я про Си++ спрашиваю.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Как найти хендл контрола

Сообщение ark » 03.12.2012 (Пн) 2:30

Qwertiy писал(а):Результаты:
А ты в Release скомпилирую, глядишь, ByRef и победит (у меня, во всяком случае, так и есть: 5050,4920,5010). Я бы не очень доверял таймингам в CLR вообще, а VB.Net - тем более - там всё оптимизировано под платформу. Даже в С++ с полностью отключенной оптимизацией, похоже, CLR таки втихую оптимизирует.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 03.12.2012 (Пн) 7:25

ark писал(а):А ты в Release скомпилирую, глядишь, ByRef и победит

Это и было в релизе. Правда, в x86-конфигурации.

А вот так в Any CPU:
Код: Выделить всё
DoItByVal #1: 4159.2378
DoItByVal #2: 4156.2377
DoItByVal #3: 4163.2382
DoItByVal #4: 4161.238

DoItByRef #1: 4156.2377
DoItByRef #2: 4149.2374
DoItByRef #3: 4155.2376
DoItByRef #4: 4155.2377

DoItWithByVal #1: 4153.2375
DoItWithByVal #2: 4169.2385
DoItWithByVal #3: 4159.2379
DoItWithByVal #4: 4151.2374

А вот в x64:
Код: Выделить всё
DoItByVal #1: 4183.2393
DoItByVal #2: 4164.2382
DoItByVal #3: 4171.2386
DoItByVal #4: 4156.2377

DoItByRef #1: 4176.2388
DoItByRef #2: 4157.2378
DoItByRef #3: 4151.2375
DoItByRef #4: 4156.2377

DoItWithByVal #1: 4149.2373
DoItWithByVal #2: 4152.2375
DoItWithByVal #3: 4150.2373
DoItWithByVal #4: 4150.2374

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как найти хендл контрола

Сообщение Хакер » 03.12.2012 (Пн) 7:30

Вы тестируете то, что вообще не имеет смысла тестировать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 03.12.2012 (Пн) 7:32

Хакер писал(а):Вы тестируете то, что вообще не имеет смысла тестировать.

Почему?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как найти хендл контрола

Сообщение Хакер » 03.12.2012 (Пн) 7:39

Вы тестируете в тепличных условиях. В идеальных, когда действует масса благоприятных факторов, которые нивелируют разницу между подходами.

Если то же самое запустить в неблагоприятных условиях — будет интереснее.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 03.12.2012 (Пн) 7:42

Хакер писал(а):Вы тестируете в тепличных условиях. В идеальных, когда действует масса благоприятных факторов, которые нивелируют разницу между подходами.

Так сравнивать же и надо, когда ничего не мешает работе коде, иначе результат будет рандомный. Или я не так понял?

Хакер писал(а):Если то же самое запустить в неблагоприятных условиях — будет интереснее.

А какие условия неблагоприятные?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как найти хендл контрола

Сообщение Хакер » 03.12.2012 (Пн) 7:55

Qwertiy писал(а):Так сравнивать же и надо, когда ничего не мешает работе коде, иначе результат будет рандомный. Или я не так понял?

Нет. Аппаратная и программная платформа делают многое, благодаря чему даже плохой код будет работать достаточно хорошо. Но только ничего не мешает.

Данные из физ. памяти читаются блоками по 8 байт (а не по столько, по сколько вы читаете).
Данные из физ памяти попадают в процессорный кеш. Который двухуровневый.
В ваших тепличных тестах никто не «сбивает» этот кеш, поэтому всё получается максимально быстро. В реальной жизни закешированные данные из кеша могут быть выкинутыми.
В ваших тепличных тестах страница, к которой происходит обращение, попадает в working-set и до конца теста не выбрасывается оттуда. В реальной жизни происходят урезания working-set-ов и выкидывание страниц из них в файл подкачки.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Пред.

Вернуться в Windows-программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList  
cron