Nel libro Più efficace C++ (numero 15), ho letto che il codice diventa molto più lento se le eccezioni sono abilitate, anche se non vengono utilizzate. A mio parere, le eccezioni sono di uso limitato e cerco di evitarle, ma questo è un altro argomento.Come disattivare la gestione delle eccezioni?
non del tutto a capire la sua dichiarazione:
- Che cosa significa l'abilitazione/disabilitazione eccezioni significa? È la differenza tra avere zero o più di zero try/catch blocchi? È una bandiera del compilatore? Cosa succede se utilizzo una DLL in cui possono verificarsi eccezioni?
- Supponiamo non fa eccezione è mai gettato:
- funziona il codice di diventare più lento nel suo insieme o sono solo le parti in cui il programma entra/esce cercano blocchi/catch diventano più lenti? Secondo l'autore, entrambi sono vere.
- Come posso compilare senza eccezioni? Posso farlo anche se ho provato/catturare i blocchi? Posso farlo se le DLL che uso potrebbero generare eccezioni?
Il libro è vecchio, i compilatori sono diventati un heckofalot più intelligente da allora. Oggi uno discreto può farlo con zero overhead, usando la ricerca basata su tabella dall'indirizzo dell'istruzione per trovare il codice che deve essere eseguito quando lo stack è svolto.Ma se vuoi preoccuparti comunque, guarda le opzioni del compilatore, la maggior parte ha un'opzione per disabilitare la funzione. –
"A mio parere, le eccezioni sono di uso limitato e cerco di evitarle, ma questo è un altro argomento." La mia ipotesi è che il tuo codice non chiami nessuna chiamata di sistema fallibile. Stai programmando un riscaldatore della CPU? –
@ user4590120: le eccezioni non sono l'unico modo per gestire l'errore. Io uso i codici di ritorno per verificare se sono riusciti o meno. – Fabian