<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 介紹 歡迎使用Zephir,這是一種開源的、高級的/特定于域的語言,旨在促進PHP擴展的創建和可維護性,重點關注類型和內存安全。 Zephir是一種語言,它滿足了PHP開發人員試圖編寫和編譯可由PHP執行的代碼的主要需求。它支持動態和靜態類型,并且它的一些特性對于PHP開發人員來說是熟悉的。 Zephir這個名字是Z(end)E(ngine)/PH(P)/I(nte)r(mediate)的縮寫。雖然這表明發音應該是`zephyr`,但Zephir的創造者實際上將其發音為[zaefire](https://translate.google.com/#en/en/zaefire)。 ## 為什么是Zephir? 今天的PHP應用程序必須平衡許多關注點,包括穩定性、性能和功能。每個PHP應用程序都基于一組通用組件,這些組件也是許多其他應用程序的基礎。 這些通用組件是庫、框架或兩者的組合。一旦安裝,框架很少改變,作為應用程序的基礎,它們必須功能強大,而且速度非常快。 得快速和健壯的庫可能很復雜,因為它們通常實現了高級別的抽象。在基本庫或框架很少更改的情況下,有機會構建提供此功能的擴展,利用編譯提高性能和資源消耗。 使用Zephir,您可以實現可從PHP使用的面向對象的庫/框架/應用程序,從而獲得重要的時間,使您的應用程序更快,同時改善用戶體驗。 ## 如果您是一名PHP程序員 PHP是用于開發Web應用程序的最流行的語言之一。像PHP這樣的動態類型和解釋語言由于其靈活性而提供了非常高的生產力。 從版本4開始,PHP基于Zend Engine實現。這是一個虛擬機,它從字節碼表示中執行PHP代碼。Zend Engine幾乎存在于世界上所有的PHP安裝中。使用Zephir,您可以為在Zend Engine下運行的PHP創建擴展。 PHP是Zephir的宿主,所以它們顯然有很多相似之處;然而,它們也有重要的差異,這些差異賦予了Zephir自己的個性。例如,Zephir更嚴格,由于編譯步驟,與PHP相比,它可能會使您的生產力降低。 ## 如果你是C程序員 C是有史以來最強大和最流行的語言之一。事實上,PHP是用C編寫的,這也是PHP擴展可用于它的原因之一。C為您提供了管理內存、使用低級類型甚至內聯匯編例程的自由。 然而,與PHP或Zephir相比,用C開發大型應用程序可能需要比預期更長的時間,如果您不是經驗豐富的開發人員,則可能很難找到一些錯誤。 Zephir的設計是安全的,所以它不實現指針或手動內存管理,所以如果你是一個C程序員,你會覺得Zephir不如C強大,但更友好。 ## 編譯VS解釋 編譯通常會減慢開發速度,在運行代碼之前,您需要更多的耐心來編譯代碼。另一方面,解釋往往會降低代碼性能,從而有利于開發人員的生產力。也就是說,在某些情況下,解釋和編譯代碼的速度之間沒有任何明顯的差異。 Zephir需要編譯你的代碼,但功能是從PHP中使用的,它是解釋的。 一旦代碼被編譯,就沒有必要再這樣做了。解釋的代碼在每次運行時都被解釋。開發人員可以決定他們的應用程序的哪些部分應該在Zephir中,哪些不應該。 ## 靜態類型語言與動態類型語言 一般來說,在靜態類型語言中,變量在其生存期內綁定到特定類型。它的類型不能更改,只能引用類型兼容的實例和操作。像C/C++這樣的語言是用這個方案實現的: ```c int a = 0; a = "hello"; // not allowed ``` 在動態類型中,類型綁定到值,而不是變量。因此,一個變量可能引用一個類型的值,然后稍后被重新分配給一個不相關類型的值。JavaScript/PHP是動態類型語言的例子: ```js var a = 0; a = "hello"; // allowed ``` 盡管動態語言具有生產力優勢,但它可能不是所有應用程序的最佳選擇,特別是對于非常大的代碼庫和高性能應用程序。 優化PHP等動態語言的性能比C等靜態語言更具挑戰性。在靜態語言中,優化器可以利用附加到變量本身的類型信息來做出決策。在動態語言中,可供優化器使用的此類線索較少,這使得優化選擇更加困難。 雖然動態語言優化的最新進展很有希望(如JIT編譯),但它們落后于靜態語言的最新技術水平。因此,如果你需要非常高的性能,靜態語言可能是一個更安全的選擇。 靜態語言的另一個小好處是編譯器執行的額外檢查。編譯器不能發現邏輯錯誤,這是更重要的,**但編譯器可以提前發現錯誤,在動態語言中只能在運行時發現。** Zephir同時具有靜態和動態類型,允許您盡可能地利用這兩種方法。 ## 編譯方案 Zephir提供原生代碼生成(目前通過編譯成C)。像`gcc/clang/vc++`這樣的編譯器會優化代碼并將其編譯成機器碼。下圖顯示了該過程的工作原理: ![](https://img.kancloud.cn/01/6d/016dcf2997246bb1ddd79d24d1819bff_459x167.png) 除了Zephir提供的那些,隨著時間的推移,編譯器已經實現并成熟了許多優化,這些優化可以提高編譯應用程序的性能: * **GCC優化**:https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Optimize-Options.html * **LLVM通過**:https://llvm.org/docs/Passes.html * **Visual C/C++優化**:https://msdn.microsoft.com/en-us/library/k1ack8f1.aspx ## 代碼保護 在某些情況下,編譯不會顯著提高性能。這可能是因為瓶頸位于應用程序的I/O綁定部分(很可能),而不是計算/內存綁定。但是,編譯代碼也可以為您的應用程序帶來某種程度的知識保護。使用Zephir,生成本地二進制文件,您還可以向用戶或客戶“隱藏”原始代碼。 ## 結論 Zephir不是用來取代PHP或C的。相反,我們認為它是對它們的補充,允許PHP開發人員冒險進行代碼編譯和靜態類型。Zephir試圖將C和PHP世界的好東西結合起來,尋找機會使應用程序更快。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看