Комментарии 6
Любопытно.
По идее, clr не должна позволять перекрывать ссылочный тип значимым. Но, похоже, забыли рекурсию.
По идее, clr не должна позволять перекрывать ссылочный тип значимым. Но, похоже, забыли рекурсию.
Она и не позволяет: внутри struct не разместить object _field и IntPtr _pointer. Именно поэтому такой изврат. Но она и не должна позволять два ссылочных типа по одному адресу держать :)
У меня есть альтернативное предложение для статьи. Возможно, если и не автор, то кто-то другой заинтересуется.
Есть задача — получать хеши алгоритмом Tiger управляемым кодом быстрее чем через pinvoke вызов неуправляемой библиотеки. (проверка целостности файлов в p2p клиенте). Есть множество реализаций на C#, но pinvoke по скорости обходит их всех. Лучшая «оптимизированная» реализация работает примерно в 2 раза медленнее.
Я пытался разобраться в этой несправедливости. После доработок реализация на C# считает на 30% медленнее чем pinvoke. Это лучший результат для полностью управляемого кода из известных мне.
Практического смысла в решении задачи не много. Примерно столько же как в получении указателя на объект.
Есть задача — получать хеши алгоритмом Tiger управляемым кодом быстрее чем через pinvoke вызов неуправляемой библиотеки. (проверка целостности файлов в p2p клиенте). Есть множество реализаций на C#, но pinvoke по скорости обходит их всех. Лучшая «оптимизированная» реализация работает примерно в 2 раза медленнее.
Я пытался разобраться в этой несправедливости. После доработок реализация на C# считает на 30% медленнее чем pinvoke. Это лучший результат для полностью управляемого кода из известных мне.
Практического смысла в решении задачи не много. Примерно столько же как в получении указателя на объект.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Получение указателя на объект .Net