В методе, который вызывается часто, например, в событии рисования, более эффективно повторно использовать объекты Point и Rectangle (для указания местоположений и границ) или мне следует создавать новые.
Должен ли я повторно использовать точки и прямоугольники или создавать новые?
Ответы (1)
Итак, Point
и Rectangle
не являются объектами — это struct
. Таким образом, они не присутствуют в куче (если только они не находятся в поле), но, наоборот, их копирование действительно может оказать влияние (не очень большое — они не очень большие).
Если вы используете их в узком цикле, то все в порядке - предварительно инициализируйте их в переменной. Конечно, вы можете просто реорганизовать свои текущие x/y и ширину/высоту, чтобы использовать Point
и т. д. для хранения. Также обратите внимание, что (вопреки большинству сценариев) они на самом деле являются изменяемыми структурами, поэтому вы можете изменять их внутренние значения внутри своего цикла и т. д.
Также обратите внимание, что во IIRC существуют перегрузки многих графических операций, которые принимают примитивные значения вместо структур — вы их рассматривали?
В конечном счете, однако, я не думаю, что это окажет какое-либо заметное влияние по сравнению с реальными графическими операциями. Не подчеркивайте это; если ваш код работает...