как правильно удалить свойства ndb

Я пишу это, чтобы убедиться, что это правильно.

Перенос семантики был создан, чтобы избежать ненужного копирования больших объектов. Bjarne Stroustrup в своей книге «Язык программирования C ++» использует два примера, когда по умолчанию происходит ненужное копирование: одно, замена двух больших объектов и два - возврат большого объекта из метода.

Обмен двумя большими объектами обычно включает в себя копирование первого объекта во временный объект, копирование второго объекта на первый объект и копирование временного объекта во второй объект. Для встроенного типа это очень быстро, но для больших объектов эти три копии могут занимать много времени. «Назначение перемещения» позволяет программисту переопределить поведение копии по умолчанию и вместо этого заменять ссылки на объекты, а это значит, что копирования вообще нет, а операция свопинга выполняется намного быстрее. Назначение перемещения может быть вызвано вызовом метода std :: move ().

Возврат объекта из метода по умолчанию включает в себя создание копии локального объекта и связанных с ним данных в доступном местоположении (поскольку локальный объект недоступен для вызывающего и исчезает при завершении метода). Когда возвращается встроенный тип, эта операция выполняется очень быстро, но если возвращается большой объект, это может занять много времени. Конструктор перемещения позволяет программисту переопределить это поведение по умолчанию и вместо этого «повторно использовать» данные кучи, связанные с локальным объектом, указав объект, который возвращается вызывающему, чтобы кучи данных, связанных с локальным объектом. Таким образом, копирование не требуется.

В языках, которые не позволяют создавать локальные объекты (то есть объекты в стеке), эти типы проблем не возникают, поскольку все объекты выделены в куче и являются всегда доступен по ссылке.

13
задан aschmid00 3 October 2012 в 07:52
поделиться