Sto cercando di ottimizzare alcuni codici di formattazione delle stringhe che sono molto colpiti dal nostro codice. Stavamo usando ostringstream e ho convertito il codice per usare sprintf (in realtà sprintf_s più sicuri di Microsoft). Ho scambiato la sicurezza del tipo per le prestazioni in fase di esecuzione. Ma ho eseguito il debug di abbastanza strani incidenti relativi allo sprintf per sapere che sprintf ha i suoi gravi difetti che il controllo del tempo di compilazione di ostringstream cattura. Ma l'ostruzionismo è più di un ordine di grandezza più lento di quanto non lo sia con la mia misura, e non è tollerabile in questo codice. Inoltre, non sono entusiasta della leggibilità della formattazione della stringa di flusso C ++, ma potrebbe essere del tutto soggettiva.
Quindi sfortunatamente durante la formattazione delle stringhe in C ++ ho diverse opzioni "standard" che non sono ottimali:
- sprintf: veloce, ma non sicuro. Può avere bug insidiosi quando non viene utilizzata la stringa di formato errata.
- ostringstream: lento, ma digita sicuro. IMO Brutto, troppo prolisso e difficile da leggere.
- boost :: format - un po 'più leggibile di Ostringstream IMO, ma nei miei benchmark delle prestazioni sembra essere più lento quindi ostringstream, quindi questo è fuori.
Per riassumere, non sono davvero soddisfatto delle opzioni "standard". Mi piacerebbe qualcosa che prendesse sul serio sia le prestazioni che il tipo di sicurezza. Quali altre opzioni di formattazione delle stringhe sono disponibili per C ++?