Stavo codificando alcune funzioni in C ++ e mi chiedevo in che modo diverse versioni di quelle funzioni avrebbero influito sul codice di assembly generato. Ho inserito diverse versioni nello strumento Explorer del compilatore di Godbolt e ho esaminato l'assemblaggio generato. È stata un'esperienza interessante vedere queste differenze e alcune versioni che sembravano essere più efficienti occupano molte più linee di assemblaggio di quelle più prolisse e, al contrario, alcune versioni di livello più basso occupano più di alcune versioni "di medio livello" (contrariamente alle mie aspettative).
Dato che non si può giudicare la performance di queste uscite guardando solo il conteggio delle righe, mi sono chiesto come si possa stimare approssimativamente la differenza di prestazioni tra diverse versioni?
Come posso analizzare diversi output per vedere più facilmente se qualche output di codice contiene più potenziali chiamate ASM costose di un altro output o devo prima imparare assembly per fare questo?