發表文章

目前顯示的是 7月, 2019的文章

.Net Core 程式優化原則參考

今天閱讀到一篇關於 .Net Core 程式優化文章 ,順手翻譯、摘錄,作為參考: JIT 與 inline 篇: 已下為不會被轉譯為 inline 的函式: 1.1 大於 32 bytes 的程式碼 1.2 虛擬函式 1.3 含有除 if / else 之外的複雜流程控制的函式(例如: switch / while) 1.4 含有例外處理的程式碼,但會拋出例外的程式碼可能仍會被轉譯 1.5 傳入參數為結構或泛型 垃圾收集與記憶體配置篇: 可選用 cache 機制、區域物件 cache、使用 using 以有效控制物件存取範圍 有效率的使用 Filter 功能: .Net Core 提供以下 5 種 Filter: Authorization filters Resource filters Action filters Exception filters Result filters 根據不同時機選用 DI 服務生命週期的類型: DI 生命週期分為以下三種: Transient : 每次請求時都會產生新的 Instance Scoped : 每個 http Request 都會產生一份 Instance Singleton : 整個 Application 只會有一份 Instance 避免使用 LINQ LINQ 難以被 JIT 優化,並且對效能有影響,但有時是不可避免使用,須謹慎評估。 另一方面,LINQ to SQL 比 LINQ 更危險,應謹慎使用。 重構自動產生的程式碼 自動產生的程式碼是參考,程式設計師才最懂程式架構與流程 .NET Core 應用程式發佈方式: 7.1 Framework-dependent deployment (FDD): 最小封裝尺寸;僅包含應用程式程式碼與第三方套件內容 7.2 Self Contained Deployment (SCD): 封裝包含 .Net Core 函式庫與 .NET Core runtime,可獨立執行 7.3 Framework Dependent Executables (FDE): 與 FDD 相似,封裝在目標平台上執行的可執行檔,僅包含應用程式程式碼與第三方套件內容 回應壓縮:可使用回應壓縮中