Más notas de estudio eficaz C: Eficiencia cuatro

1. Comprensión 80-20 Directrices

2. Considere el uso de método de evaluación perezosa

Por ejemplo el recuento de referencias acercarse a la clase string

Distinguir entre lectura y escritura

extracto de Lazy: puntero a IMPLEMENTACIÓN DE las ideas de diseño

evaluación de la expresión perezosa

3. Calcular la amortización deseado

el consumo por delante de tiempo compartido de computación está por encima de una idea contraria, método de cálculo demasiado entusiasta

Por ejemplo, utilizando la memoria caché (considerado en el cálculo, o con más frecuencia la misma operación se repite)

.vector lógica de expansión de memoria contenedor

4. Entender el origen de los objetos temporales

El establecimiento de un objeto sin nombre no producirá montón objetos temporales, puede crear, por ejemplo, nombre de tipo (...) Manual;

Más en general, la conversión implícita se genera en la llamada de función se genera o cuando la función devuelve.

referencia const objetos sin temporales (llamada de función)

 

5. Ayudar a la optimización del valor de retorno

objeto devuelto es inevitable.

Usted debe considerar la reducción del coste de las declaraciones de objetos en lugar de objetos evitar volver.

Devuelve el objeto de alguna manera que permite al compilador para eliminar la sobrecarga de objetos temporales.

Ese argumento del constructor de retorno en lugar de un retorno directo al objeto.

const Rational operator*(const Rational& lhs, const Rational& rhs)
{
    return Rational(lhs.numerator() * rhs.numerator(), lhs.denominator() + rhs.denominator());
}

El establecimiento de un objeto temporal devuelto. Constructor y destructor de consumo dentro de este método todavía tiene una función de objeto temporal, Object constructores y destructores consumo tendrán.

Beneficio es c ++ reglas permiten que el compilador para optimizar objetos temporales no aparece, de la siguiente manera:

Rational a = 10;

b Rational (1, 2);

Rational c = a * b;

Se permitirá como para llamar al compilador para eliminar las variables temporales del gestor y operador * * variables temporales regresaron, dejando sólo una función de la estructura de costos, que la estructura C.

c no puede ser eliminada, ya que c es un objeto con nombre, objeto llamado no puede ser eliminado. Además de esta función también se puede declarada en línea para eliminar su cabeza llamada.

6. Al evitar la sobrecarga de conversiones de tipos implícitos

7. Considere solos formar una forma de asignación operador sustituido (op =)

8. considerar el cambio de la biblioteca

9. apreciará funciones virtuales, la herencia múltiple, y las clases base virtuales cuestan RTTI

Aprender puntero virtual tabla y la tabla virtual, es decir VTBL y la VPTR. VTBL es generalmente una función de una matriz de punteros (o lista). Declaradas en la clase o heredadas funciones virtuales, tienen su propio

VTBL, puntero de la ejecución del proyecto VTBL es un puntero a la función miembro virtual.

El coste necesario para la llamada de función virtual llamada a una función sustancialmente la misma que a través de un puntero de función, la función virtual en sí no suele ser un cuello de botella en el rendimiento.

funciones virtuales no pueden ser inline,

 

 

 

 

 

 

 

 

 

 

Publicado 44 artículos originales · ganado elogios 5 · Vistas 1396

Supongo que te gusta

Origin blog.csdn.net/qq_33776188/article/details/104635658
Recomendado
Clasificación