當前位置:首頁 » 編程軟體 » 編譯時用戶程序運行快嗎

編譯時用戶程序運行快嗎

發布時間: 2022-08-22 02:45:43

A. 請問用C#在VS編寫的程序運行快還在vc++用MFC編寫的程序運行的快呢

第一次編譯運行,C++要快,因為它是一次直接編譯成機器指令。
而C#第一次編譯運行要慢些,先編譯成平台無關的CIL代碼,然後由JIT編譯器編譯成本地相關的機器代碼。

但是再運行的話,後來C#就高效了,因為JIT編譯器將CIL代碼便以為相應的本地機器代碼的時候,會用適合目標操作系統的方式將結果存在內存中,以備以後使用,就不用再編譯CIL了。
更重要的是JIT編譯器,Just-In-Time即時編譯器,.NET運行庫環境將使用針對各種不同CPU的JIT編譯器,每個編譯器都會針對底層平台進行優化。

最後,現在的硬體越來越便宜,性能越來越高,一次編譯和二次編譯在速度上已經沒什麼差別了,但是二次編譯的好處太大了,跨平台能力大大提升,一次編譯處處運行。

B. 為什麼C語言編寫的系統程序執行速度比用其他語言編寫的快

C語言是高級語言,編譯後生成可執行程序。
它的執行速度一般來說,比要通過解釋執行的語言快。但比匯編語言慢。

不一定比其它高級語言快,例如,數學運算方面,可能不如fortran快,當然,假定兩者用的演算法完全一樣。

如果演算法不同,兩種語言就不好比較了。例如,對整篇輸入文章進行語句結構或片語結構替代,用Perl 腳本比C快。

計算機語言其實是人的工具,例如,菜刀,斧頭,螺絲刀,各有所長,各有各的用途。菜刀切菜,斧頭劈柴,換過來用也不是不是可以,斧頭切菜,菜刀劈柴,效率差。

C語言同C語言比,速度也不一樣。MS VC++ 同 TB不一樣.
同一種C語言,編譯時用了優化1,優化2,執行程序快慢不同。

C. 編譯後的程序比邊解釋邊執行的程序的運行速度快嗎為什麼

程序的編譯是指將人可以理解的代碼(如C的源代碼)段編譯成機器指令碼(二級制指令),也就是處理堆棧、處理器、匯流排的指令,交由計算機自動執行。解釋型語言是在需要執行時臨時編譯運行,執行時多了編譯的過程,自然就要慢的多了。
比較特殊的是java,javac命令編譯的結果雖然也是二進制文件,但實際也不是機器指令,而是優化後的代碼,最後的執行是通過java虛擬機再次編譯後執行。所以效率介於編譯型和解釋型之間。
目前java的執行速度已經有了大幅度的提升,但要想趕上或超越C 或者匯編,理論上是不現實的。

D. 程序的編譯速度與程序的執行速度

執行與編譯。。也有掛鉤!。。執行、編譯速度又跟硬體有關!用 WEB來說 第一次編譯比較慢!後面這次訪問就快多了!這跟緩存有關。。還有就是代碼的問題。。 多次的循環判斷也會造成系統執行變慢!。。在提升速度方面 主要就是倆種方法 1.完善的代碼 2.提高硬體了!可能我說的比較片面!別的兄弟可以繼續補充!

E. c#編譯後的程序比邊解釋邊執行的程序運行速度要快嗎

兄弟,你先理解一下,解釋和編譯的不同。
所謂解釋程序,跟我們現實生活中的口譯一樣,是外國人說一句,口譯跟著譯成一句中文。
而編譯程序,是一篇外文文稿,由翻譯先譯成中文過後,再拿出來。

你覺得是一句一句地聽快些,還是整篇中文的文章自己看著快呢。

F. 計算機有解釋器為什麼還要有編譯器 明顯是編譯器要快捷於解釋器啊…………

下面這個回答可以參考:

編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)

編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。

解釋具有良好的動態特性和可移植性,比如在解釋執行時可以動態改變變數的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不同的系統上,則程序不用改動就可以在移植了解釋器的系統上運行。同時解釋器也有很大的缺點,比如執行效率低,佔用空間大,因為不僅要給用戶程序分配空間,解釋器本身也佔用了寶貴的系統資源。

G. 編譯和解釋的區別是什麼

1.定義區別

①編譯原理旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。

②匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。

2.處理方式區別

①編譯過程與解釋挺像,區別就在於編譯是將所有的源代碼指令一次性成翻目標代碼並執行。

②匯編過程就是把匯編指令一對一地翻譯成01機器碼的過程。而採用這種處理方式的語言只有一類:匯編語言。

3.特點區別

①編譯語言的特點就是不需要解釋器的參與,所以運行比較快,但是編譯好的程序只能在當前平台運行,是個局限性。

②匯編語言是當今世界上歷史最早,應用最廣,功能最強大,運行速度最快的編程語言。但是匯編語言開發工期長,可讀性差,並且不能跨平台編程。

H. 編譯程序和解釋程序有何區別

計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。

編譯程序、解釋程序、匯編程序是3種語言處理程序。其區別主要為:匯編程序(為低級服務)是將匯編語言書寫的源程序翻譯成由機器指令和其他信息組成的目標程序。解釋程序(為高級服務)直接執行源程序或源程序的內部形式,一般是讀一句源程序,翻譯一句,執行一句,不產生目標代碼,如BASIC解釋程序。編譯程序(為高級服務)是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標程序。編譯程序與解釋程序最大的區別之一在於前者生成目標代碼,而後者不生成;此外,前者產生的目標代碼的執行速度比解釋程序的執行速度要快;後者人機交互好,適於初學者使用。用COBOL、FORTRAN等語言編寫的程序考慮到執行速度一般都是編譯執行。

I. 如何精確計算JS程序運行時間,進而優化代碼

一、 讓代碼簡潔:一些簡略的表達方式也會產生很好的優化
eg:x=x+1;在不影響功能的情況下可以簡寫為x++;
二、 變數名方法名盡量在不影響語意的情況下簡單。(可以選擇首字母命名)
eg:定義數組的長度可以取名為:ArrLen而不需要取為ArrayLength。
三、 關於JS的循環,循環是一種常用的流程式控制制。
JS提供了三種循環:for(;;)、while()、for(in)。在這三種循環中for(in)的效率最差,因為它需要查詢Hash鍵,因此應盡量少用for(in)循環,for(;;)、while()循環的性能基本持平。當然,推薦使用for循環,如果循環變數遞增或遞減,不要單獨對循環變數賦值,而應該使用嵌套的++或–運算符。
四、 如果需要遍歷數組,應該先緩存數組長度,將數組長度放入局部變數中,避免多次查詢數組長度。
因為我們常常要根據字元串、數組的長度進行循環,而通常這個長度是不變的,比如每次查詢a.length,就要額外進行一個操作,而預先把var len=a.length,則就少了一次查詢。
五、 盡量選用局部變數而不是全局變數。
局部變數的訪問速度要比全局變數的訪問速度更快,因為全局變數其實是window對象的成員,而局部變數是放在函數的棧里的。
六、 盡量少使用eval。
每次使用eval需要消耗大量時間,這時候使用JS所支持的閉包可以實現函數模板。
七、 減少對象查找
因為JavaScript的解釋性,所以a.b.c.d.e,需要進行至少4次查詢操作,先檢查a再檢查a中的b,再檢查b中的c,如此往下。所以如果這樣的表達式重復出現,只要可能,應該盡量少出現這樣的表達式,可以利用局部變數,把它放入一個臨時的地方進行查詢。
八、 字元串連接。
如果是追加字元串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr。
如果要連接多個字元串,應該少使用+=,如s+=a;s+=b;s+=c;應該寫成s+=a + b + c;
而如果是收集字元串,比如多次對同一個字元串進行+=操作的話,最好使用一個緩存。怎麼用呢?使用JavaScript數組來收集,最後使用join方法連接起來,如下
var buf = new Array();for(var i = 0; i < 100; i++){ buf.push(i.toString());}var all = buf.join("");
九、 類型轉換
1. 把數字轉換成字元串,應用"" + 1,雖然看起來比較丑一點,但事實上這個效率是最高的,性能上來說:("" +) > String() > .toString() > new String()
盡量使用編譯時就能使用的內部操作要比運行時使用的用戶操作要快。
String()屬於內部函數,所以速度很快,而.toString()要查詢原型中的函數,所以速度遜色一些,new String()用於返回一個精確的副本。
2. 浮點數轉換成整型,這個更容易出錯,很多人喜歡使用parseInt(),其實parseInt()是用於將字元串轉換成數字,而不是浮點數和整型之間的轉換,我們應該使用Math.floor()或者Math.round()。Math是內部對象,所以Math.floor()其實並沒有多少查詢方法和調用的時間,速度是最快的。
3. 對於自定義的對象,如果定義了toString()方法來進行類型轉換的話,推薦顯式調用toString(),因為內部的操作在嘗試所有可能性之後,會嘗試對象的toString()方法嘗試能否轉化為String,所以直接調用這個方法效率會更高
十、 盡量作用JSON格式來創建對象,而不是var obj=new Object()方法。

熱點內容
nsis資料庫 發布:2025-02-06 07:44:52 瀏覽:852
密碼沒改為什麼解不開 發布:2025-02-06 07:42:45 瀏覽:93
方舟編譯器可以開發應用程序么 發布:2025-02-06 07:26:59 瀏覽:297
什麼導師配置好 發布:2025-02-06 07:19:23 瀏覽:476
263會議視頻密碼是多少 發布:2025-02-06 07:09:59 瀏覽:708
uc小說瀏覽器緩存 發布:2025-02-06 07:05:05 瀏覽:468
wifi路由手機怎麼設置密碼 發布:2025-02-06 07:00:57 瀏覽:986
nsurlsession上傳 發布:2025-02-06 06:55:18 瀏覽:337
亞洲十帥exo訪問 發布:2025-02-06 06:51:40 瀏覽:99
編程一首詩 發布:2025-02-06 06:45:04 瀏覽:529