前段時間一位專家公開宣稱C#是被優化過的開發語言,生成的結果運行速度比VB.NET快10倍,當時我第一個出來反對這樣毫無根據的結論.今天這位專家試圖用一段代碼證明C#比VB.NET快10倍.內容如下....







這樣的資料讓我感到很意外,C#我也用過一段時間差異不會這么大吧~~~~~于是我也做了本地測驗,結果如下:


在我反駁的證據后~~~~~~~~~~~

請問我們測驗的差異在哪里了?
uj5u.com熱心網友回復:
都是編譯成IL代碼由CLR來運行,所以說,主要看編譯器的如果實作同樣的功能,編譯器生成的IL代碼質量不一樣,效率就會有差別
但是很多時候,就算有差別,這個差別也是非常小
不用太在意這兩者的運行速度,因為這兩者速度主要決定于開發人員的經驗水平,而不是語言
uj5u.com熱心網友回復:
差異找到了,這位專家多輸入了個0,然后他就認為C#比VB.NET快10倍
uj5u.com熱心網友回復:
恩,這很磚家。。。uj5u.com熱心網友回復:
怎么看專家的沒多一個零啊uj5u.com熱心網友回復:
可能是練功走火入魔了uj5u.com熱心網友回復:
厲害了,再加個0 就是100倍了uj5u.com熱心網友回復:
那個東方號稱研究生學歷......uj5u.com熱心網友回復:
我也有一個例子:以前我服務過的公司,老板被一個大學老師忽悠的,招聘了一位測驗部門的所謂“重要”員工,大學老師推薦時說他可神了,說他編程、測驗都多么多么厲害,結果老板就信了。
后來他非要到開發這邊來作業,于是就跑到我的眼皮底下。結果作業了沒幾天,除了從網上(比如csdn上)找一堆垃圾代碼之外,也沒有能力完成任何設計,反而我們的軟體變得例外地慢。幾天之后有人向我反映發現了軟體有例外卡頓問題,我就“找找看”什么問題。結果一看,就發現它弄了一個50毫秒 interval 的 Timer,不斷視窗有沒有被移動到桌面的邊框。原本在視窗被移動的事件中才需要捕獲的東西,為什么要弄 Timer 來輪詢呢?最重要地是應用軟體突然變得例外地“卡頓”他為什么沒有意識到呢?
我就請他講了一下他這十幾天寫過的代碼。結果發現了更加詭異的事情,他竟然大言不慚地告訴我說
if(....)這里的 return 是跳出 if 判斷的。他竟然連不知道這個跳出當前方法!
{
.....
return;
}
再來看他對測驗的理解,完全不懂 TDD 原理,他跟其它5位同學合寫(實際就是抄別人的手冊、書籍,美其名曰“編著”)一本關于測驗方面的書,然后前邊寫上了他們老師的名字,然后他負責打電話給各個培訓學校去推銷。上班時也經常跑到走廊里去打這方面的電話。他們對于測驗的知識,我問了一下,完全是當時的往前10幾年的垃圾書本上的一點概念的組合,而已。我是沒有看他們的書啦,因為談話能看出是花孔雀般地那種搞銷售的人品、還是腳踏實地開發人員的人品。
uj5u.com熱心網友回復:
而他的老師推薦他來公司,是號稱他具有研究生同等學力的大學畢業生。我看他們大學可能老師也不怎們樣。uj5u.com熱心網友回復:
程式之類額細節不要死摳,是個人都有可能犯錯誤,都有可能“多寫一個0”,這沒有什么。關鍵是很明顯的一些涉及到“人品”的問題,不能去分析真正的技術,不能寫出測驗代碼來說話、承認測驗為準的原則,而是把定性的概念當作花哨的借口。
凡是好的程式設計師,都是用代碼和測驗資料來驅動的,而不是定性地糾結各種“規范、結論”的。
uj5u.com熱心網友回復:
人家專家學歷比你高,收入比你高,技術比你高,江湖地位就更不說了,你又何苦去拆穿人家呢?

uj5u.com熱心網友回復:
這事只有兩種可能,一是他騙你,二是他被別人騙了uj5u.com熱心網友回復:
這。。。。。很科學
uj5u.com熱心網友回復:
C#與VB.NET比速度這想都不用想,肯定一樣,有這時間不如去比比與Java的性能差別uj5u.com熱心網友回復:
這個是發代碼前天說的內容,我認為他在胡扯,后來他測驗了2個IDE又放上來
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
磚家直接被打臉。哈哈哈
uj5u.com熱心網友回復:
主要是他一種不公正的方法詆毀我心愛的VB.NET,這是我不能接受的~~~
uj5u.com熱心網友回復:
Rows.Add 根本就不會對UI不斷操作,只是對個物件不斷操作而已。UI的重繪是很廢資源的,微軟又不是傻子,退出回圈后一次性部分重繪就可以,不會每次操作都更改的。
他說的話里面錯誤很多,這種人既然談不到一起就不要談好了。
uj5u.com熱心網友回復:
這專家有沒有群啊 LZ快邀請我入群
uj5u.com熱心網友回復:
沒人反駁他,我就出個頭~~~
uj5u.com熱心網友回復:
你要去嗎?~~~
uj5u.com熱心網友回復:
lz在哪加的笑話群,帶我一個
uj5u.com熱心網友回復:
對那種沒人品的人,遠離他吧,享受自己的生活。
uj5u.com熱心網友回復:
你要去嗎?~~~
這么牛逼的大神 我一定想要認識一下啊....
uj5u.com熱心網友回復:
你要去嗎?~~~
這么牛逼的大神 我一定想要認識一下啊....
這里好像發不了群 號
uj5u.com熱心網友回復:
Rows.Add 根本就不會對UI不斷操作,只是對個物件不斷操作而已。
UI的重繪是很廢資源的,微軟又不是傻子,退出回圈后一次性部分重繪就可以,不會每次操作都更改的。
他說的話里面錯誤很多,這種人既然談不到一起就不要談好了。
跟他吵了幾天了
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
付訓串貼了,現在粘過來其實這完全取決于IL,同樣的C#代碼,在不同版本的.Net下編譯出的IL都可能會有細微的差別,還去基于這個角度討論誰快誰慢有什么意義?
就算是同一份C++代碼,去不同的平臺不同的編譯器下編譯,運行結果都不一樣,有的甚至直接報錯
uj5u.com熱心網友回復:
付訓串貼了,現在粘過來
其實這完全取決于IL,同樣的C#代碼,在不同版本的.Net下編譯出的IL都可能會有細微的差別,還去基于這個角度討論誰快誰慢有什么意義?
就算是同一份C++代碼,去不同的平臺不同的編譯器下編譯,運行結果都不一樣,有的甚至直接報錯
主要是他用一種不公正的方法詆毀我心愛的VB.NET,這是我不能接受的~~~而且這種無腦資料馬上就可以打臉,簡單有效!
uj5u.com熱心網友回復:
程式之類額細節不要死摳,是個人都有可能犯錯誤,都有可能“多寫一個0”,這沒有什么。
關鍵是很明顯的一些涉及到“人品”的問題,不能去分析真正的技術,不能寫出測驗代碼來說話、承認測驗為準的原則,而是把定性的概念當作花哨的借口。
凡是好的程式設計師,都是用代碼和測驗資料來驅動的,而不是定性地糾結各種“規范、結論”的。
程式員就是一個需要腳踏實地一步一步的走出來的
uj5u.com熱心網友回復:
單就這些代碼來說,基本上呼叫的都是.net標準類別庫里的東西,只要標準類別庫版本是一樣的,那運行效率不可能取決于呼叫它的那幾行代碼。
uj5u.com熱心網友回復:
單就這些代碼來說,基本上呼叫的都是.net標準類別庫里的東西,只要標準類別庫版本是一樣的,
那運行效率不可能取決于呼叫它的那幾行代碼。
前天注意到JAVA9里面加了aot 才知道C#有多先進。ngen這東西在C#里已經出來N年了java9這才出來。
uj5u.com熱心網友回復:
讓我終于看清了這么幾年,這么大VB.net陣營"人才"土崩瓦解的涌向了C#陣營.你憑什么還相信什么C比V更有前途之類的謊言,早幾年都劈謠了,這幾年又抬了頭,時間證明C#程式員再次誤導了這群,沒有腦殼的VB.net程式員,放棄了自己喜愛的語言轉向了C#,我只承認有資源多少的比較,但是絕對沒有說微軟放棄VB,C#的代碼有更高的效率之類的謊言,如果你信了,那么你就轉吧.又多了一個人在邯鄲學步.
.net基于虛擬機的托管代碼,微軟當時介紹.net是用自己喜歡的語言用出同樣高效的代碼,都是虛擬機在執行,不是V還是C的執行,如果你進了.net殿堂還在爭什么語言好,請重新進門看一下進.net門口那副"對聯".
1不管是C還是V最終要編譯成IL,你分得清IL他姓C還是姓V.
2如果分得清,那么接下來通過JIT編譯成本機代碼,你還能分得清本機代碼姓V還是姓C
即然都不是C和V代碼了,你憑什么說C和V更優?
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。比如說VB的IIF函式就比C#的 ? : 慢很多。
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
是嗎?有空做個測驗
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
那if短路呢?這個效率如何
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
那if短路呢?這個效率如何
object型別估計也是要慢?
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
那if短路呢?這個效率如何
比如說
C#寫 if (a() && b()) ...
如果a()回傳false,b不執行
VB if a() and b() then ...
則不會短路,這是為了向前兼容vb6的代碼邏輯
vb要短路,需要用andalso
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
那if短路呢?這個效率如何
比如說
C#寫 if (a() && b()) ...
如果a()回傳false,b不執行
VB if a() and b() then ...
則不會短路,這是為了向前兼容vb6的代碼邏輯
vb要短路,需要用andalso
有這個了吧 if(testexpression as boolean,truepart as object,falsepart as object) as object
試了下確實比iif要快
uj5u.com熱心網友回復:
我不記得這個if叫什么了,可能不叫短路?
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
那if短路呢?這個效率如何
我反正寫代碼的時候都是用的andalso
uj5u.com熱心網友回復:
iif一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
這個就不要誤導新人了iif是VB6的,只不過為了向前兼容VB6才會有這種情況,而C#是一種新的語種不需要兼容V6
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
剛才試了一下,IIF確實有問題,換成IF Else 運算式后速度和C#基本一樣~~~~
而且有趣的是
IIF函式比IF函式慢
IF函式 比IF Else 運算式速度慢~~~估計是IIF和IF函式都用的Object
uj5u.com熱心網友回復:
我沒有誤導別人的主觀動機。再比如,vb支持on error resume next,但是這其實在vb.net中用了很多try catch和goto實作的。C#沒有等價物,并且vb.net這么寫,效率低不少呢。uj5u.com熱心網友回復:
這坑比的微軟不開源, 讓磚家情何以堪....現在不是有開源了, 讓磚家去看下...
uj5u.com熱心網友回復:
是在特意推銷c#課程吧uj5u.com熱心網友回復:
是在特意推銷c#課程吧
對方號稱搞培訓機構的~~~~
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
其實我是反對唯預言論者。VB和VB.NET應該遵循設計之初的意向,服務于業務開發。
C類的語言,應該搞演算法計算等等。拿來拖控制元件做UI實在是折煞。
uj5u.com熱心網友回復:
理論上來說,只要不是同一個編譯器(使用同樣的編譯選項)生成的可執行代碼,就完全可能存在運行速度的差異,比如用intel C++和ms VC++分別編譯linpack浮點性能測驗程式(C代碼),使用同樣的優化選項,在同一機器上運行編譯后的linpack測驗程式,測驗結果有將近三倍的分數差距,表明intel C++對科學計算,尤其是浮點運算的性能優化更好。但是具體到vb.net和c#,由于兩者是同一公司、基于同一架構的產品,可以非常肯定地說,出于開發成本上的考慮,兩者應該是使用同一編譯器后端的,代碼生成和優化部分是一模一樣的,只有前端詞法分析、語法分析、語意分析、中間代碼生成(如果有的話)這些是不同的,所以性能差距即便有,也應該是很小的。
uj5u.com熱心網友回復:
vb.net 在許多地方、許多運算確實比 c# 編譯出來的代碼執行得慢一點。這一點我也是贊同的。(畢竟 vb.net 重點在其它一些它自己認為更好、更方便的特點上)關鍵是“慢多少?對于整個程式執行價值來說,值幾毛錢?”,這才是關鍵。
也就是說拿測驗來說話就能比較客觀。那么別人提出了測驗程式,對于一個“教師”來說,更應該謹慎地測驗自己的代碼。如果一個教師說“工資比你高、技術比你高、江湖地位比你高”這種潑婦罵街的話,那就把自己的人品拉低到跟剛作業但是人品還沒有成熟的小孩子一樣的地位了。
這個培訓學校應該開除這個教師。
uj5u.com熱心網友回復:
vb.net 在許多地方、許多運算確實比 c# 編譯出來的代碼執行得慢一點。這一點我也是贊同的。(畢竟 vb.net 重點在其它一些它自己認為更好、更方便的特點上)
關鍵是“慢多少?對于整個程式執行價值來說,值幾毛錢?”,這才是關鍵。
也就是說拿測驗來說話就能比較客觀。那么別人提出了測驗程式,對于一個“教師”來說,更應該謹慎地測驗自己的代碼。如果一個教師說“工資比你高、技術比你高、江湖地位比你高”這種潑婦罵街的話,那就把自己的人品拉低到跟剛作業但是人品還沒有成熟的小孩子一樣的地位了。
這個培訓學校應該開除這個教師。
是啊,前幾天和他吵了幾天了
uj5u.com熱心網友回復:
個人感覺,選擇c#、vb、java開發的專案就不要太在意性能了。真要是在乎性能的程式直接c搞起來。uj5u.com熱心網友回復:
是在特意推銷c#課程吧uj5u.com熱心網友回復:
我個人覺得是差別不大,如果在核心部分有差異完全可以用c寫,2者都可以呼叫uj5u.com熱心網友回復:
靠技識訓不下去的一種出路就是去做培訓機構的老師uj5u.com熱心網友回復:
靠技識訓不下去的一種出路就是去做培訓機構的老師
經典
uj5u.com熱心網友回復:
哎呀媽呀 我還以為真的有什么不一樣,就是想他們都編譯成IL,最多就是編譯的時候快慢的問題,怎么運行的時候也會差這么多,專家啪啪啪打臉啊 哈哈哈哈uj5u.com熱心網友回復:
on error resume next和goto這個也是VB6的,也是為了兼容才有這種語法,對于錯誤處理try catch才是.net共有的你這還是在誤導新人
uj5u.com熱心網友回復:
一看就是新手級別,稍微老的程式員2個都會。因為日常專案有很多2個語言都要用,有些時候是必須用。。
許多VB.NET的專案維護要用VB,甚至VB6
誰會去比較這個,吹毛求疵。。無聊,一看就是實習生提的問題。
uj5u.com熱心網友回復:
娘希匹 不是100倍嗎。uj5u.com熱心網友回復:
VB.NET的短路判斷有兩個: AndAlso 和 OrElseuj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
我要測驗一下, 因為我有點不信, 因為我覺得這只是寫法不同,經.net編譯后應該是一樣的。 iff出現的很早,在微軟的Forxpro里就有了。
uj5u.com熱心網友回復:
哪里來的傻屌專家,私信我群地址我去懟他…………uj5u.com熱心網友回復:
說速度,python比NET還慢好不好,不一樣火的很,以后運行速度會越來越不重要的uj5u.com熱心網友回復:
對了,python不僅慢,而且還型別都不定義,全域變數也古里古怪的,完全不影響人家流行啊!話說樓主qq多少啊,我也用vb.net,加個有問題請教請教
uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
額,C#有IIF嗎?如果沒有咋比較,你如果要用IF來比較,那么VB也用IF,這樣才是合理的,你不能讓VB用IIF,c#用IF吧,這樣肯定是不對的!
uj5u.com熱心網友回復:
IIF是個坑,IIF(a,b,c),不論條件a是True還是False,都要同時計算一遍b和c的值,所以慢。uj5u.com熱心網友回復:
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
我要測驗一下, 因為我有點不信, 因為我覺得這只是寫法不同,經.net編譯后應該是一樣的。 iff出現的很早,在微軟的Forxpro里就有了。
uj5u.com熱心網友回復:
實踐證明vb.net快uj5u.com熱心網友回復:
程式之類額細節不要死摳,是個人都有可能犯錯誤,都有可能“多寫一個0”,這沒有什么。
關鍵是很明顯的一些涉及到“人品”的問題,不能去分析真正的技術,不能寫出測驗代碼來說話、承認測驗為準的原則,而是把定性的概念當作花哨的借口。
凡是好的程式設計師,都是用代碼和測驗資料來驅動的,而不是定性地糾結各種“規范、結論”的。
一般情況沒有差異,因為VB和C#生成的IL基本等價。當然這是一般情況,特殊情況也是有的。
比如說VB的IIF函式就比C#的 ? : 慢很多。
完全贊成,現在代碼寫的少了,看得多。但偶爾手癢還是喜歡用vb寫。另外微軟對vb的支持少了的說法也欠妥當,只是我們能看見的vb的資料太少了,實際在framework框架下,支持是一樣的,C#能實作的,vb.net都可以。而且vb很多地方都比C#更簡潔。
uj5u.com熱心網友回復:
說一千道一萬,最根本的:代碼質量,邏輯思維。好的代碼質量怎么可呢卡頓和緩慢,不管什么語言都如此。uj5u.com熱心網友回復:
廢話不多說,直接上測驗結果。

事實是差別很細微,應該VB還快點。另外告訴那位專家,糾結這些東西,他永遠在入門級別徘徊。
uj5u.com熱心網友回復:
樓主,精神可嘉,居然沒被磚家忽悠到。給我看見磚家說這樣的話我也懟他,會動腦子的也不會說出C#比VB快10倍的話來,還說是磚家,可笑
uj5u.com熱心網友回復:
我也一直用VB.NET,遺憾的是不能用VB.NET開發安卓和蘋果的APP,而C#可以。這就是微軟的偏見了。整體效率應該差不多,但是代碼書寫方面,我感覺VB.NET有那么一點點優勢,
就拿定義一個變數來說,dim bt as new Button
還有獲取檔案路徑方法:My.Application.Info.DirectoryPath
還有其他很多地方,VB.NET用很少的幾行代碼就能達到C#一大串代碼的效果。
uj5u.com熱心網友回復:
C#還有我不想滿螢屏輸this.uj5u.com熱心網友回復:
vb.net怎么不能開發APP?搞笑吧,而且方式還不止一種。uj5u.com熱心網友回復:
vb.net怎么不能開發APP?搞笑吧,而且方式還不止一種。
我一直找怎么用VB.NET開發安卓和IOS的APP,請大神賜教!!

uj5u.com熱心網友回復:
今天無聊,發現lz就打碼了個1啊uj5u.com熱心網友回復:
程式之類額細節不要死摳,是個人都有可能犯錯誤,都有可能“多寫一個0”,這沒有什么。
關鍵是很明顯的一些涉及到“人品”的問題,不能去分析真正的技術,不能寫出測驗代碼來說話、承認測驗為準的原則,而是把定性的概念當作花哨的借口。
凡是好的程式設計師,都是用代碼和測驗資料來驅動的,而不是定性地糾結各種“規范、結論”的。
有道理
uj5u.com熱心網友回復:
現在學習一下。uj5u.com熱心網友回復:
我測驗過,效率一樣的。uj5u.com熱心網友回復:
效率肯定一摸一樣啊,都是.net Runtime啊uj5u.com熱心網友回復:
我覺得測驗結果相差那么多的人 編程水平真的有點差轉載請註明出處,本文鏈接:https://www.uj5u.com/net/64917.html
標籤:VB.NET
上一篇:Docker常用命令
