Производительность: if (OBJECT_INSTANCE - TYPE) - PullRequest
1 голос
/ 04 февраля 2011

Я работаю как на C #, так и на ActionScript 3. Оба языка работают с учетом типов, поэтому вы можете проводить проверки, такие как:

if (some_object_instance is SomeClassName_ThatIs_SomeType)

Я выполняю такие проверки в нескольких местах.Это может быть глупый вопрос, но я все равно задам его, и я хочу получить ответы от обоих лагерей, C # и ActionScript:

Что происходит за кулисами?Это отражение?Если да, разве это не долгая проверка, которая может привести к снижению производительности, если она выполняется тысячами циклов?И под «ухудшением производительности» я подразумеваю, является ли он более интенсивным, чем, скажем, (Math.sqrt(8) > Math.sin(10))

Ответы [ 2 ]

4 голосов
/ 04 февраля 2011

В C # (или лучше сказать: ILCode) он компилируется в инструкцию.Хорошо читать для этого Есть как или как есть?Эрик Липперт .

1 голос
/ 04 февраля 2011

Ну, это отражение, и это не так. Оператор «is» заставит среду выполнения проверить манифест сборки, содержащей тип, для проверки иерархии наследования. Программная рефлексия сделала бы то же самое. Однако в этом случае это делается с использованием гораздо более легких и специальных средств, встроенных в среду выполнения, чем было бы доступно из пространства имен System.Reflection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...