"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Los punteros inteligentes en C++ vienen con una importante sobrecarga de memoria y tiempo?

¿Los punteros inteligentes en C++ vienen con una importante sobrecarga de memoria y tiempo?

Publicado el 2024-11-13
Navegar:326

Do Smart Pointers in C   Come with a Significant Memory and Time Overhead?

Sobrecarga de memoria y tiempo de los punteros inteligentes en C

Punteros inteligentes, como std::shared_ptr y std::unique_ptr en C 11, Proporciona gestión automática de la memoria y simplifica la semántica de propiedad. Sin embargo, algunos desarrolladores pueden preguntarse sobre el posible impacto en el rendimiento del uso de punteros inteligentes en comparación con los punteros tradicionales.

Sobrecarga de memoria:

std::unique_ptr impone una sobrecarga de memoria solo si Se proporciona un eliminador no trivial. Sin embargo, std::shared_ptr siempre requiere memoria adicional para el contador de referencia, aunque sea una cantidad relativamente pequeña.

Tiempo sobrecargado:

std::unique_ptr genera una sobrecarga de tiempo durante construcción si es necesario copiar el eliminador proporcionado o inicializar el puntero como nulo, y durante la destrucción para destruir el objeto de propiedad.

std::shared_ptr experimenta una sobrecarga de tiempo principalmente durante la construcción para crear el contador de referencia, durante la destrucción para disminuir el contador de referencia y potencialmente destruir el objeto, y durante la asignación incrementar el contador de referencia. Además, estos incrementos/disminuciones son atómicos para la seguridad de los subprocesos, lo que contribuye aún más a la sobrecarga.

Impacto en el rendimiento:

Es importante tener en cuenta que ninguno de los los punteros tienen una sobrecarga de tiempo durante la desreferenciación, que suele ser la operación más frecuente para los punteros.

En general, la sobrecarga asociada con los punteros inteligentes es mínima y no debería afectar significativamente el rendimiento del código. Sin embargo, la creación y destrucción continua de punteros inteligentes puede generar cuellos de botella en el rendimiento.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3