Domanda

Ho fatto un po 'di ASM in linea che codifica per SSE prima e non è stato anche difficile anche per chi non conosce ASM. Ma rilevo MS forniscono anche intrinseche che avvolgono molti tali istruzioni speciali.

C'è una particolare differenza di prestazioni, o di qualsiasi altro forte motivo per cui uno dovrebbe essere usato sopra l'altro?

Per ripetere dal titolo, questo è specificamente coprendo intrinseci esposti da VC ++ 2008 per non gestito, C ++ nativo.

È stato utile?

Soluzione

In generale è meglio usare intrinseche - è più produttivo per il programmatore e un buon compilatore (ad esempio Intel ICC) farà un lavoro decente di allocazione dei registri, la pianificazione delle istruzioni ecc La Microsoft compilatore non è buono in questo senso, ma probabilmente fa ancora un lavoro ragionevole -. si può sempre passare alla ICC in seguito, se è necessario per ottenere prestazioni migliori

Altri suggerimenti

Non v'è alcuna linea di assemblaggio in Visual C ++ per x64. Intrinseche possono essere utilizzati su x64 pure. Se vi capitasse di voler porta il codice per x64, dovrete usare intrinseche.

Intrinsics sono identici ai loro equivalenti istruzioni di montaggio e si dovrebbe usare se possibile - il compilatore sa di tradurli direttamente, non v'è alcuna differenza di prestazioni.

Utilizzare intrinseche.

Utilizzando il montaggio di solito provoca diversi giorni di lavoro non-stop, solo per scoprire il compilatore batte la vostra migliore prestazione del 5%. (5% se sei veramente bravo,. Molto probabilmente il 30%)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top