Уже есть много отличных ответов, но позвольте мне привести вам один пример:
У меня есть простой класс Item:
class Item
{
public:
std::string name;
int weight;
int price;
};
Я делаю вектор, чтобы держать связку из них.
std::vector
Я создаю один миллион объектов предметов и выталкиваю их обратно на вектор. Я сортирую вектор по имени, а затем выполняю простой итеративный двоичный поиск определенного имени элемента. Я тестирую программу, и для завершения выполнения требуется более 8 минут. Затем я меняю свой инвентарный вектор так:
std::vector
... и создаю миллион объектов объекта через new. ТОЛЬКО изменения, которые я делаю для моего кода, - это использовать указатели на Элементы, за исключением цикла, который я добавляю для очистки памяти в конце. Эта программа работает менее чем за 40 секунд или лучше, чем 10-кратное увеличение скорости. EDIT: код находится в http://pastebin.com/DK24SPeW . При оптимизации компилятора он показывает только увеличение на 3,4 раза на машине, на которой я только что протестировал ее, что по-прежнему значительно.
// Устанавливаем только верхние, левые, правые анкеры, чтобы представление не сжималось при выдвижении вверх
controller.view.leftAnchor.constraint(equalTo: bottomSheetViewContainerView.leftAnchor).isActive = true
controller.view.rightAnchor.constraint(equalTo: bottomSheetViewContainerView.rightAnchor).isActive = true
controller.view.topAnchor.constraint(equalTo: bottomSheetViewContainerView.topAnchor).isActive = true
Вы должны добавить нижнее> = 0 ограничение
и удалить
bottomSheetViewContainerView.heightAnchor.constraint(equalToConstant: controller.view.bounds.height).isActive = true
Если ограничения в представлении контроллера правильны, он должен работать.