C#之ILC和C++的CLR前者更快?

楔子

ILC是C#寫的,CLR是C++。.Net 7中,為何微軟執意用一個托管的模型去嘗試取代非托管框架呢?至少native code方面它是這么做的

這個問題一直縈繞腦海。

非托管和托管

十年前出版的那本久負盛名的《CLR via C#》至今都是不可或缺的存在,它里面有句話說的是:一些理由使我們相信未來的托管代碼在執行效率上會比當前的非托管代碼更優秀。大多數托管應用程序目前的性能已相當不錯,將來還有望進一步提升。

而十年前的未來,也就是現在。

方面

一:
要看快,從結果方面看,也就是托管函數運行的效率,速度。ILC作為全員預編譯,比CLR便加載內存,邊編譯,遇到函數就編譯是要快很多的。

二:
從過程方面,ILC的運行速度遠不如C++這種系統級語言來的更快。但是.Net本身是個托管的框架,它負責的或者執行的是被JIT之后的結果。所以無論ILC過程多慢,只要ILC的結果快于CLR運行的過程,ILC依然比CLR快。

結構

谷歌有個golang語言,它的runtime就是自舉的,也就是runtime用go語言寫的。微軟估計也想搞這種方向,把.Net runtime搞成C#寫的,至少目前看來,native code這塊是實現了這點。

那么將來微軟的技術體系模型,runtime這塊大約只有托管dll和ILC這兩項了。前者作為參數進行析構,后者則承擔了之前CLR和JIT的大部分工作。并且還承擔了LLVM和寫目標文件的重任。

結尾

微軟體系的技術更新,有點快。
本文作者:江湖評談(公眾號同名)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280045.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280045.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280045.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

歷史

python的歷史 kfsaldkfsdf fdskfdsa fdsjkafsjda fdshkfjsdja View Codefjdskaffdsjkaffdsjakflsad;fjdsklaf 轉載于:https://www.cnblogs.com/jin-xin/articles/10448286.html

typescript+react+antd基礎環境搭建

typescriptreactantd基礎環境搭建(包含樣式定制) tsconfig.json 配置 // 具體配置可以看上面的鏈接 這里module moduleResolution的配置都會影響到antd的顯示 // allowSyntheticDefaultImports 是antd官網給的配置 必須加上 {"compilerOptions&quo…

最小生成樹Prim算法和Kruskal算法

https://www.cnblogs.com/JoshuaMK/p/prim_kruskal.html 轉載于:https://www.cnblogs.com/DixinFan/p/9225105.html

如何重新打開Windows防火墻提示?

If you are setting up a new program that needs network access, but are not paying close enough attention, you might end up accidentally causing Windows firewall to block the program. How do you fix such a mistake? Today’s SuperUser Q&A post helps a f…

判斷字符串出現次數最多的字符 及 次數

分析 題目的意思大致就是找出每個字符出現的次數,然后比較大小。那么每個字符都應該對應它出現的次數。既然是一一對應的,那我們就想到用對象的key和value來儲存字符和其出現的次數。具體做法 新建一個空對象obj 遍歷給定的字符串接下來就是最重要的 把字…

AI x 量化:華爾街老司機解密智能投資正確姿勢

隨著中國經濟的騰飛,中產階級的崛起,投資管理逐漸步入尋常百姓家。 值得注意的是,在十年前“無財可理”問題解決后,另一個矛盾愈發凸顯——層次不齊的投資素質。據wind數據統計,2004年至2015年12年間,只有3…

如何遠程調試 MAUI blazor / Blazor Hybrid

我們知道瀏覽器模式下 Blazor 可以使用 F12 打開開發工具,調試js查看頁面元素,那當 Maui Blazor 提示煩人的 an unhandled error has occurred 該怎么進行調試呢?1. VS 運行工程于 Debug 模式下,只要 BlazorWebview 控件處于焦點,直接按F12就可以打開開發工具了. 沒有焦點就鼠…

筆記本觸摸鍵盤驅動自動禁用_如何為iPad的藍牙鍵盤禁用自動更正

筆記本觸摸鍵盤驅動自動禁用The take-for-granted features we enjoy when using an on-screen keyboard—like auto-corrections and auto-capitalization–quickly become a hindrance if you’re using a physical keyboard with your iOS device. Let’s look at how to qu…

發票的作用

目錄 發票上的兩個章:稅種:發票的作用:征稅方式:發票限額:參考鏈接發票上的兩個章: 稅務局的發票監制章商家的發票專用章稅種: 增值稅:商家在賣東西時為獲利,而提高價格的…

opencv-原圖基礎上添加指定顏色

前言 項目中需要將某些區域使用不同的顏色表示出來&#xff0c;同時能夠看到原圖作為底色。 代碼 #include "opencv2/highgui/highgui.hpp" #include <opencv2/imgproc.hpp> #include <iostream> using namespace cv;int main() {Mat image imread( &q…

微軟發布Azure Application Insights for Node.js 1.0版本

在北美舉行的Node.js交互大會上&#xff0c;微軟發布了用于Node.js的Application Insights SDK。\\來自微軟JavaScript平臺和工具部門的高級經理Arunesh Chandra在博客上發布了這一消息&#xff0c;他說&#xff0c;微軟“希望能夠提升開發者在Azure上構建和運行Node.js應用程序…

正則表達式應用:實現一個簡單的計算器

實現一個簡單的計算器&#xff0c;代碼如下&#xff1a; 下面的函數用來檢驗數學表達式的合規性&#xff0c;當然此處只實現兩個檢驗&#xff1a;(1)括號應該閉合 (2)不能出現字母 def check_expression(str):check_result Trueif str.count(() ! str.count()):print(表達式有…

軟考復盤:我的一些復習經驗分享

大家好&#xff0c;我是Edison。最近全身乏力頭疼&#xff0c;38.5度高燒&#xff0c;好在癥狀較輕&#xff0c;經過一天躺平加吃了芬必得&#xff08;簡直神藥&#xff09;后&#xff0c;退燒了&#xff0c;也不乏力了&#xff0c;也就趁娃娃睡覺時間跟大家分享一下軟考的復習…

自定義注解在攔截器中為空_如何在Android中為特定聯系人設置自定義鈴聲

自定義注解在攔截器中為空Everyone likes to know who’s calling before they actually pick up the phone, and the easiest way to achieve that is with custom ringtones for specific callers. That way, when your phone starts blasting “Cherry Pie,” you know it’…

對象的成員的初始化

變量類型&#xff1a; 1. 內置基本類型: int, char, bool, 2. 復合類型 &#xff08;compound type&#xff09;: 指針、引用、數組 3. 類類型&#xff1a; struct, class (string,vector等) 定義變量時&#xff1a; 一&#xff1a;進行“初始化”&#xff1a;可分為 ①指…

Golang面向API編程-interface(接口)

Golang面向API編程-interface&#xff08;接口&#xff09; 作者&#xff1a;尹正杰 版權聲明&#xff1a;原創作品&#xff0c;謝絕轉載&#xff01;否則將追究法律責任。 Golang并不是一種典型的面向對象編程&#xff08;Object Oriented Programming&#xff0c;OOP&#xf…

Linux學習_菜鳥教程_3

我是在UBANTO上運行Linux的&#xff0c;開機啟動時按下shift或者Esc都不能進入到grub,沒有百度到可靠的教程。 暫時先這樣吧。免得我把系統搞壞了&#xff0c;先學點實用的知識~~ Next Chapter轉載于:https://www.cnblogs.com/sggggr/p/9233627.html

如何使用 EF Core 7 批量刪除數據

在 EF Core 7 中&#xff0c;我們可以使用批量操作來刪除多條數據。這種方式與之前的版本有所不同&#xff0c;本文將對比 EFCore 7 和之前版本批量刪除數據的不同方式。刪除給定 ID 的數據 在 EF Core 7 中&#xff0c;我們可以使用以下代碼來刪除給定 ID 的數據&#xff1a;a…

筆記本禁用鍵盤命令符_如何在Windows中禁用命令提示符和“運行”程序

筆記本禁用鍵盤命令符The Command Prompt and the Run program are pretty powerful tools in the Windows world. If you’d rather specific users on a computer not have access to them, it’s not too hard to do. 命令提示符和運行程序是Windows世界中非常強大的工具。 …

MySQL Date 函數

2019獨角獸企業重金招聘Python工程師標準>>> MySQL 中最重要的內建日期函數&#xff1a; NOW() 返回當前的日期和時間 CURDATE() 返回當前的日期 CURTIME() 返回當前的時間 DATE() 提取日期或日期/時間表達式的日期部分 EXTRACT() 返回日期/時間按的…