TypeDescriptionProvider / реализация HyperDescriptor

Я в настоящее время заполняю свою сетку WPF с помощью сбора данных, который реализует ITypedList, с содержавшей реализацией объектов ICustomTypeDescriptor. Все свойства определяются во времени выполнения.

Я желаю реализовать HyperDescriptor, чтобы помочь ускорить производительность, но пример на той странице больше относится к известным типам, а не свойствам времени выполнения.

Я думал бы, что должен буду реализовать пользовательское GetProperties() метод или подобный, чтобы сказать HyperTypeDescriptor, какие свойства это должно посмотреть на, но не уверено, где это должно быть установлено. Я полагаю, что это не трудно, но я, очевидно, пропускаю что-то.

Любые подсказки очень ценятся!

5
задан LJW 22 February 2010 в 23:53
поделиться

1 ответ

Почти похоже на предыдущий ответ - вы можете дать каждому партнерскому веб-сайту уникальный ключ (в URL), который они отправят. ваше серверное приложение будет (расшифровать и) сопоставлять ключ со списком дочерних веб-сайтов и подсчитывать происхождение интересов.

-121--4012918-

После долгих испытаний я полагаю, что обнаружил, что вызывает эту конкретную проблему. Я не говорю, что другой ответ неверен, просто в данном случае не проблема, которую я имею.

Из того, что я могу сказать, curl _ multi _ exec () не возвращается, пока не будут устранены все DNS (сбой или успех). Если есть куча urls с плохими доменами curl _ multi _ exec () не возвращается хотя бы для:

(time it takes to get resolve error) * (number of urls with bad domain)

Вот кто-то еще , который обнаружил это :

Просто примечание об асинхронном характере мультифункций cURL: DNS-поиск не является (насколько я знаю сегодня) асинхронным. Так что если один DNS поиск вашей группы не удается, все в списке URL после этого также не удается. Мы на самом деле обновляем наш файл hosts.conf (я думаю?) на нашем сервере ежедневно, чтобы обойти это. Он получает IP-адреса, а не смотрит их вверх. Я верю, что над ним работают, но не уверен, что он еще изменен в cURL.

Кроме того, тестирование показывает, что cURL (по крайней мере, моя версия) соответствует параметру CURLOPT _ CONNECTTIMEOUT . Конечно, первый шаг нескольких циклов может занять много времени, так как cURL ожидает каждого URL для разрешения или тайм-аута.

-121--4180319-

Реализация StartDescriptor действительно специфична для свойств времени компиляции, поскольку использует ILGenerator и т.д. и кэширует сгенерированный код. Если вы используете ICustomDescriptor , то уже в совершенно другом профиле производительности - например, если пользовательский PropertyDescriptor работает с словарем или хеш-таблицей в качестве пакета свойств, то уже может быть значительно быстрее, чем необработанное отражение.

Это может быть возможным для дальнейшей оптимизации, но мне нужно знать больше о конкретной реализации. Но это было бы нетривиальной работой, поэтому сначала удовлетворяйтесь, что доступ к этому члену на самом деле является узким местом, и что вы не могли бы сделать что-то простое, как пейджинг или "виртуальный режим" в первую очередь.

(пояснение: Я - автор SunDescriptor, поэтому хорошо знаю эту область)

4
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: