freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

計(jì)算機(jī)專業(yè)外文翻譯----托管代碼的優(yōu)點(diǎn)(已修改)

2025-05-31 17:57 本頁(yè)面
 

【正文】 托管代碼的優(yōu)點(diǎn) Microsoft中間語言與 Java字節(jié)代碼共享一種理念:它們都是一種低級(jí)語言,語法很簡(jiǎn)單 (使用數(shù)字代碼,而不是文本代碼 ),可以非??焖俚剞D(zhuǎn)換為內(nèi)部機(jī)器碼。對(duì)于代碼來說,這種精心設(shè)計(jì)的通用語法,有很 大 的優(yōu)點(diǎn)。 1. 平臺(tái)無關(guān)性 首先,這意味著包含字節(jié)代碼指令的同一 個(gè) 文件可以放在任一 個(gè) 平臺(tái)中,運(yùn)行時(shí)編譯過程的最后階段可以很容易完成,這樣代碼就可以運(yùn)行在該特定的平臺(tái)上。 也就是說 編譯為中間語言就可以獲得 .NET 平臺(tái)無關(guān)性,這與編譯為 Java字節(jié)代碼就會(huì)得到 Java平臺(tái)無關(guān)性是一樣的。 注意 .NET的平臺(tái)無關(guān)性目前只是一種可能,因?yàn)樵诰帉懕緯鴷r(shí), .NET 只能用于 Windows平臺(tái),但人們正在積極準(zhǔn)備,使它可以用于其他平臺(tái) (參見 Mono 項(xiàng)目,它用于創(chuàng)建 .NET 的開放源代碼的實(shí)現(xiàn),參見 2. 提高性能 實(shí)際上, IL比 Java字節(jié)代碼的作用還要大。 IL 總是即時(shí)編譯的 (稱為 JIT 編譯 ),而 Java字節(jié)代碼常常是解釋性的, Java的一個(gè)缺點(diǎn)是,在運(yùn)行應(yīng)用程序時(shí),把 Java字節(jié)代碼轉(zhuǎn)換為內(nèi)部可執(zhí)行代碼的過程會(huì)導(dǎo)致性能的損失 (但在最近, Java在某些平臺(tái)上能進(jìn)行 JIT編譯 )。 JIT編譯器并不是把整個(gè)應(yīng)用程序一次編譯完 (這樣會(huì)有很長(zhǎng)的啟動(dòng)時(shí)間 ),而是只編譯它調(diào)用的那部分代碼(這是其名稱由來 )。代碼編譯過一次后,得到的內(nèi)部可執(zhí)行代碼就存儲(chǔ)起來,直到退出該應(yīng)用程序?yàn)橹梗@樣在下次運(yùn)行這部分代碼時(shí),就不需要重新編譯了。 Microsoft認(rèn)為這個(gè)過程要比一開始就編譯整個(gè)應(yīng)用程序代碼的效率高得多,因?yàn)槿魏螒?yīng)用程序的大部分代碼實(shí)際上并不是在每次運(yùn)行過程中都執(zhí)行。使用 JIT 編譯器,從來都不會(huì)編譯這種代碼。 這解釋了為什么托管 IL 代碼的執(zhí)行幾乎和內(nèi)部機(jī)器代碼的執(zhí)行速度一樣快,但是并沒 有說明為什么Microsoft 認(rèn)為這會(huì)提高性能。其原因是編譯過程的最后一部分是在運(yùn)行時(shí)進(jìn)行的, JIT 編譯器確切地知道程序運(yùn)行在什么類型的處理器上,利用該處理器提供的任何特性或特定的機(jī)器代碼指令來優(yōu)化最后的可執(zhí)行代碼。 傳統(tǒng)的編譯器會(huì)優(yōu)化代碼,但它們的優(yōu)化過程是獨(dú)立于代碼所運(yùn)行的特定處理器的。這是因?yàn)閭鹘y(tǒng)的編譯器是在發(fā)布軟件之前編譯為內(nèi)部機(jī)器可執(zhí)行的代碼。即編譯器不知道代碼所運(yùn)行的處理器類型,例如該處理器是 x86兼容處理器或 Alpha處理器,這超出了基本操作的范圍。例如 Visual Studio 6優(yōu)化了一臺(tái) 一般的 Pentium機(jī)器,所以它生成的代碼就不能利用 Pentium III處理器的硬件特性。相反, JIT 編譯器不僅可以進(jìn)行 Visual Studio 6所能完成的優(yōu)化工作,還可以優(yōu)化代碼所運(yùn)行的特定處理器。 3. 語言的互操作性 使用 IL不僅支持平臺(tái)無關(guān)性,還支持語言的互操作性。簡(jiǎn)言之,就是能將任何一種語言編譯為中間代碼,編譯好的代碼可以與從其他語言編譯過來的代碼進(jìn)行交互操作。 那么除了 C之外,還有什么語言可以通過 .NET 進(jìn)行交互操作呢?下面就簡(jiǎn)要討論其他常見語言如何與 .NET 交互操作。 (1) Visual Basic 6在升級(jí)到 Visual Basic .NET時(shí),經(jīng)歷了一番脫胎換骨的變化。 Visual Basic是在最近的幾年中演化的,其早期版本 Visual Basic 6并不適合運(yùn)行 .NET程序。例如,它與 COM的高度集成,且只把事件處理程序作為源代碼顯示給開發(fā)人員,大多數(shù)后臺(tái)代碼不能用作源代碼。另外,它不支持繼承, Visual Basic使用的標(biāo)準(zhǔn)數(shù)據(jù)類型也與 .NET不兼容。 Visual Basic 6已經(jīng)升級(jí)為 Visual Basic .NET,對(duì) VB 進(jìn)行的改變非常大,完全可以把 Visual Basic .NET當(dāng)作是一種新語言?,F(xiàn)有的 VB6代碼不能編譯為 ,把 VB6程序轉(zhuǎn)換為 ,需要對(duì)代碼進(jìn)行大量的改動(dòng),但大多數(shù)修改工作都可以由 Visual Studio .NET(VS的升級(jí)版本,用于與 .NET 一起使用 )自動(dòng)完成。如果要把一個(gè) VB6項(xiàng)目讀取到 Visual Studio .NET中, Visual Studio .NET 就會(huì)升級(jí)該項(xiàng)目,也就是說把 VB6源代碼重寫為 源代碼。雖然這意味著其中的工作已大大減輕,但用戶仍需要檢查新的 代碼,以確 保項(xiàng)目仍可正確工作,因?yàn)檫@種轉(zhuǎn)換并不十分完美。 這種語言升級(jí)的一個(gè)副作用是不能再把 編譯為內(nèi)部可執(zhí)行代碼了。 只編譯為中間語言,就像 C一樣。如果需要繼續(xù)使用 VB6 編寫程序,就可以這么做,但生成的可執(zhí)行代碼會(huì)完全忽略 .NET Framework,如果繼續(xù)把 Visual Studio作為開發(fā)環(huán)境,就需要安裝 Visual Studio 6。 (2) Visual C++ .NET Visual C++ 6有許多 Microsoft對(duì) Windows的特定擴(kuò)展。通過 Visual C++ .NET, 又加入了更多的擴(kuò)展內(nèi)容,來支持 .NET Framework。現(xiàn)有的 C++源代碼會(huì)繼續(xù)編譯為內(nèi)部可執(zhí)行代碼,不會(huì)有修改,但它會(huì)獨(dú)立于 .NET運(yùn)行庫(kù)運(yùn)行。如果要讓 C++代碼在 .NET Framework中運(yùn)行,就要在代碼的開頭添加下述命令: using 還要把標(biāo)記 /clr 傳遞給編譯器,編譯器假定要編譯托管代碼,因此會(huì)生成中間語言,而不是內(nèi)部機(jī)器碼。C++的一個(gè)有趣的問題是在編譯托管代碼時(shí),編譯器可以生成包含內(nèi)嵌本機(jī)可執(zhí)行代碼的 IL。這表示在 C++代碼中可以把托管類型和非托管類型合 并起來,因此托管 C++ 代碼: class MyClass { 定義了一個(gè)普通的 C++類,而代碼: __gc class MyClass { 生成了一個(gè)托管類,就好像使用 C或 。實(shí)際上,托管 C++比 C更優(yōu)越的一點(diǎn)是可以在托管 C++代碼中調(diào)用非托管 C++類,而不必采用 COM交互功能。 如果在托管類型上試圖使用 .NET不支持的特性 (例如,模板或類的多繼承 ),編譯器就會(huì)出現(xiàn)一個(gè)錯(cuò)誤。另外,在使用托管類時(shí),還需要使用非標(biāo)準(zhǔn)的 C++特性 (例如上述代碼中的 __gc關(guān)鍵字 )。 因?yàn)?C++允許低 級(jí)指針
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1