DI: обработка жизни объектов IDisposable

При использовании инструкций SSE Вы, очевидно, ограничены процессорами, которые поддерживают их. Это означает x86, относясь ко времени Pentium приблизительно 2 (не может помнить точно, когда они были представлены, но это давным-давно)

SSE2, который, насколько я могу вспомнить, является тем, который предлагает целочисленные операции, несколько более свежо (Pentium 3? Хотя первые процессоры AMD Athlon не поддерживали их)

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

, С другой стороны, используют intrinsics доступное с Вашим компилятором (если не изменяет память, они обычно определяются в xmmintrin.h)

, Но снова, производительность не может улучшиться. Код SSE излагает дополнительные требования данных, которые он обрабатывает. Главным образом тот для учета - то, что данные должны быть выровненные на 128-разрядных границах. Должны также быть немногие, или никакие зависимости между значениями, загруженными в тот же регистр (регистр SSE на 128 битов может содержать 4 ints. Добавление первого и второго вместе не оптимально. Но добавление всех четырех ints к соответствующим 4 ints в другом регистре будет быстро)

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

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

8
задан ctacke 13 October 2009 в 12:54
поделиться

1 ответ

Может я чего-то упускаю, но зачем добавлять новые методы в API? Когда объект добавляется в контейнер, вы можете as-cast проверить, является ли он IDisposable, и обработать его соответствующим образом, если это так.

Мне также интересно, нужен ли вам деструктор. Предполагая, что контейнер является IDisposable (например, Unity), вы можете просто реализовать Basic Dispose Pattern и сэкономить много накладных расходов на сборку мусора.

Некоторые вопросы, которые могут быть применимы:

3
ответ дан 6 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

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