Должен ли я повторно использовать точки и прямоугольники или создавать новые?

В методе, который вызывается часто, например, в событии рисования, более эффективно повторно использовать объекты Point и Rectangle (для указания местоположений и границ) или мне следует создавать новые.


person Newtang    schedule 12.03.2010    source источник


Ответы (1)


Итак, Point и Rectangle не являются объектами — это struct. Таким образом, они не присутствуют в куче (если только они не находятся в поле), но, наоборот, их копирование действительно может оказать влияние (не очень большое — они не очень большие).

Если вы используете их в узком цикле, то все в порядке - предварительно инициализируйте их в переменной. Конечно, вы можете просто реорганизовать свои текущие x/y и ширину/высоту, чтобы использовать Point и т. д. для хранения. Также обратите внимание, что (вопреки большинству сценариев) они на самом деле являются изменяемыми структурами, поэтому вы можете изменять их внутренние значения внутри своего цикла и т. д.

Также обратите внимание, что во IIRC существуют перегрузки многих графических операций, которые принимают примитивные значения вместо структур — вы их рассматривали?

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

person Marc Gravell    schedule 12.03.2010