Inlining functions è un ottimizzazione del compilatore che sostituisce il sito di chiamata di funzione con il corpo del destinatario. Questa ottimizzazione è supportata per regular C# functions.Le funzioni asincrone possono essere allineate?
Async funzioni che supportano il modello async-await in C# 5.0 hanno una speciale dichiarazione che coinvolge i valori modificatori e ritorno avvolgente async
con Task<>
.
Anche le funzioni asincrone possono essere allineate?
Esempio:
Supponiamo che io sono queste funzioni:
private async Task<int> CalleeAsync() {
return await SomeOperationAsync();
}
private async Task<int> CallerAsync() {
return await CalleeAsync();
}
potevano essere ottimizzati per:
private async Task<int> CallerAsync() {
return await SomeOperationAsync();
}
Credit Extra:
Se è supportato, chi può decidere cosa è in linea? Il compilatore? Il JIT? me?
Se non è supportato, dovrei preoccuparmi di questo ed evitare i wrapper eccessivi che a volte aggiungo per la leggibilità?
Non è necessario creare un'altra attività. 'private Task CalleeAsync() { return SomeOperationAsync(); } ' –
I4V
@ I4V Naturalmente. Tieni presente che questo è solo un esempio concettuale semplicistico. Probabilmente gli scenari di vita reale saranno leggermente più complicati :) – talkol