В настоящее время я широко использую шаблон класса типа, чтобы быть важными для производительности частями моего кода. Я выделил как минимум два потенциальных источника неэффективности.
Неявные параметры передаются вместе с вызовами сообщений. Не знаю, действительно ли это происходит. Возможно, scalac может просто вставить неявные параметры там, где они используются, и удалить их из сигнатуры метода. Это, вероятно, невозможно в тех случаях, когда вы вставляете неявные параметры вручную, поскольку они могут быть разрешены только во время выполнения. Какие оптимизации применяются при передаче неявных параметров ?
Если экземпляр класса типа предоставляется с помощью def
(в отличие от val
), объект имеет для воссоздания при каждом вызове «метода класса». Эта проблема может быть решена с помощью JVM, которая может оптимизировать создание объекта. Эту проблему также можно решить с помощью scalac путем повторного использования этих объектов. Какие оптимизации применяются в отношении создания неявных объектов параметров?
И, конечно, могут быть дополнительные источники неэффективности при применении шаблона класса типа. Расскажите, пожалуйста, о них.