Я в настоящее время заполняю свою сетку WPF с помощью сбора данных, который реализует ITypedList
, с содержавшей реализацией объектов ICustomTypeDescriptor
. Все свойства определяются во времени выполнения.
Я желаю реализовать HyperDescriptor, чтобы помочь ускорить производительность, но пример на той странице больше относится к известным типам, а не свойствам времени выполнения.
Я думал бы, что должен буду реализовать пользовательское GetProperties()
метод или подобный, чтобы сказать HyperTypeDescriptor, какие свойства это должно посмотреть на, но не уверено, где это должно быть установлено. Я полагаю, что это не трудно, но я, очевидно, пропускаю что-то.
Любые подсказки очень ценятся!
Почти похоже на предыдущий ответ - вы можете дать каждому партнерскому веб-сайту уникальный ключ (в 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 для разрешения или тайм-аута.
Реализация StartDescriptor
действительно специфична для свойств времени компиляции, поскольку использует ILGenerator
и т.д. и кэширует сгенерированный код. Если вы используете ICustomDescriptor
, то уже в совершенно другом профиле производительности - например, если пользовательский PropertyDescriptor
работает с словарем или хеш-таблицей в качестве пакета свойств, то уже может быть значительно быстрее, чем необработанное отражение.
Это может быть возможным для дальнейшей оптимизации, но мне нужно знать больше о конкретной реализации. Но это было бы нетривиальной работой, поэтому сначала удовлетворяйтесь, что доступ к этому члену на самом деле является узким местом, и что вы не могли бы сделать что-то простое, как пейджинг или "виртуальный режим" в первую очередь.
(пояснение: Я - автор SunDescriptor, поэтому хорошо знаю эту область)