Это быстрее, чтобы кэшировать размер std :: vector

Я смотрю на класс C ++, который обтекает std :: vector и хранит размер вектора. Класс обновляет этот размер каждый раз, когда вектор изменяется, что приводит к большому количеству избыточного кода (поскольку актуальный размер всегда доступен из метода size ()). Это действительно быстрее или компилятор оптимизирует повторное использование size ()?

1

Решение

std::vector::size имеет постоянную сложность по времени, так что да, он уже хранится в векторе, а код является избыточным.

6

Другие решения

Во-первых, в отличие от того, что указано в предыдущих публикациях,
реализации std::vector что я видел (MS и G ++) делать
не размер кеша. С другой стороны, это можно рассчитать
простым вычитанием указателя, и все, что вы делаете для кэширования
размер почти наверняка добавит больше накладных расходов, чем сэкономит.

10

На всех реализациях, которые я видел, кэширование помедленнее. Это просто трата пропускной способности памяти.

1

Насколько я знаю, стандартная реализация библиотеки vector::size просто возвращает кэшированный размер, не пересчитывая его каждый раз.

0
По вопросам рекламы [email protected]