2013-03-10 8 views
21

Qual è la differenza tra MethodImplAttribute con l'opzione MethodImplOptions.AggressiveInlining e TargetedPatchingOptOut?MethodImplOptions.AggressiveInlining vs TargetedPatchingOptOut

Quando ho cercato su Google, tutti sembrano dire che entrambi (potrebbero) incorporare il metodo ma senza dare la differenza.

+2

TargetedPatchingOptOut è abbastanza ben spiegato qui: http://stackoverflow.com/questions/6109745 La parte cruciale sembra essere che l'inlining viene eseguito oltre i limiti dell'assieme, cosa che non viene eseguita di default. Mi aspetto che AggressiveInlining sia un suggerimento per allineare il metodo, ma diversamente da TargetedPatchingOptOut non consente l'inlining attraverso i limiti dell'assembly. – dtb

+0

Dopo aver letto il tuo commento ho fatto un po 'più di ricerca e ho trovato questo [collegamento] (http://blogs.microsoft.co.il/blogs/sasha/archive/2012/01/20/aggressive-inlining-in- la-clr-4-5-jit.aspx). La mia comprensione di questo post è che puoi applicare entrambi gli attributi AggressiveInlining per rimuovere il limite di dimensioni del metodo, mentre come hai detto tu TargetedPatchingOptOut consentirà l'inlining attraverso i limiti dell'assembly. È corretto? –

+0

Ecco come lo interpreterei anch'io. – dtb

risposta

11

Stavo aspettando di vedere se qualcun altro poteva avere una risposta migliore ma sembra che no.

Dopo aver letto il commento di dtb, ho fatto un po 'più di ricerca e ho trovato questo http://blogs.microsoft.co.il/blogs/sasha/archive/2012/01/20/aggressive-inlining-in-the-clr-4-5-jit.aspx.

La mia comprensione di questo post è che è possibile applicare sia l'attributo AggressiveInlining che rimuoverà il limite di dimensioni in-line del metodo, mentre come dtb ha detto che TargetedPatchingOptOut consentirà l'inlining attraverso i confini dell'assieme.

+7

Come detto sopra, non applicare TargetedPatchingOptOut nel tuo codice personale - vedi http://stackoverflow.com/a/14982340/94078 – eug

Problemi correlati