Не могу сказать, что я знаю что-либо об асимптотической эффективности GetService
, но очевидная вещь заключается в том, что гарантированно медленнее, чем сохранение ссылки на объект.По крайней мере, это должно быть очевидным, так как ссылка просто находится там, ожидая, чтобы быть использованной, в то время как GetService
требует извлечения экземпляра Type
из класса, а затем ищет этот Type
внезависимо от того, какая коллекция используется, и, наконец, приведение к правильному типу, выполнение проверок во время выполнения и т. д.
По отдельности, ни одна из этих вещей не является проблемой.Даже все вместе, ни одна из них не является проблемой, если используется только несколько раз.Но если посмотреть, как вы извлекаете их для каждого кадра, то это может стать очевидным, в зависимости от того, сколько сервисов вы извлекаете в каждом кадре.
На основании небольшого количества информации, которую я имею о вашем кодеЯ бы сказал, что переход на опорную ссылку не должен быть таким сложным.Но чтобы действительно решить, стоит ли это того, возможно, попробуйте переключиться на сохранение ссылки (по крайней мере, на пару сервисов) и проверить, насколько сильно меняется ваш FPS.В качестве альтернативы, добавьте несколько посторонних вызовов GetService
и посмотрите, какое снижение FPS это вызывает.Это был бы более точный способ выяснить важность изменения всего.