[Zephir官方文檔翻譯之二] 爲何選擇 Zephir?

爲何選擇 Zephir?

目前的PHP應用必須使用得穩定性、性能、和功能性保持平衡。 每個PHP應用是創建在大量的通用組件上的,而這些組件又基於大量的其它應用。php

這些通用的組件多是一個類/框架,或者是它們的結合。一但它們被安裝,框架不多會改變。 做爲一個應用的基礎,它們必須保持很高的功能性,同時也要保持速度優點。html

快速強大的類庫會變得很難懂,這是因爲它們是高度抽象的實現的。考慮到這些基本的類庫和框架不多會改變, 這就爲編寫一個能夠提升性能和節省計算機資源的擴展提供了一個機會。c++

經過Zephir,你能夠實現面向對象的/框架/應用,並使你的PHP程序提升到一個高的層次,讓你的應用更快,同時改善用戶的體驗。git

若是你是一個PHP程序員...

PHP是衆多流行的網站應用開發語言之一。 像PHP這種動態解析語言,由於它的靈活性,爲應用開發提供了很高的生產力。程序員

從4.x到5.x版本,PHP開始基於Zend引擎實現。Zend引擎實際上是一個用來執行PHP代碼的字節碼實現的虛擬機。 Zend引擎幾乎出如今每個安裝PHP的機器上,而經過Zephir,你能夠創建運行在Zend引擎的PHP擴展。github

Zephir是經過PHP延申出來的,因此它們有不少的類似點。可是它們的重要的不一樣點在於Zephir它本身所擁有的特色。 好比說:Zephir更加的嚴格,相對PHP編譯來講,它須要更少的資源。安全

若是你是一個C程序員...

C是一種強大而流行的開發語言。事實上,PHP語言就是C所編寫的。這就是爲何PHP的擴展可使用C語言來開發的緣由之一。 C語言能夠自由的管理內存,使用底層的類型,甚至能夠內嵌彙編語言。框架

可是相對PHP和Zephir來講,開發一個大的應用,使用C語言會花費更多的時間。並且若是你不是很是精通C語言,一些程序錯誤會很難發現。工具

Zephir語言被設計成安全的,因此它並不支持指針和內存管理,因此若是你是一個C程序員,也許你會感受Zephir功能沒有C那麼強大,可是 Zephir要比C更加的人性化。性能

編譯和解析哪一種更好

編譯一般會減緩開發的進度。你須要更耐心的等待程序的編譯,以後你才能夠執行它。另外一方面,解析型語言會犧牲一點性能來得到 更大的生產力。在一些應用中,不管是編譯型語言仍是解析型語言,在速度上相差的不會太多。

Zephir是須要預先編譯的,可是功能的實現是基於PHP來實現的。

一但代碼被編譯成功,執行的時間就無需再次編譯,可是解析型語言則不一樣,它會在每一次請求的時候從新解析一次。 開發者能夠自由的決定你的應用中哪一部份須要用Zephir來處理,哪一部分不須要。

靜態類型對比靜態類型語言(強類型語言對比弱類型語言)

通常來講,在靜態類型語言中,一個變量必定要預先聲明它的變量類型。並且它的類型不能該變,只容許類型引用和操做。 像C/C++來講:

int a = 0;a = "hello"; // 不容許

對於動態語言來講,變量的類型是和變量的值綁定的,並非變量自己。因此當變量的值的類型該變的時候,變量的類型也會 根着該變。像Javascript/PHP來講:

var a = 0;a = "hello"; // 能夠這樣使用

儘管動態解析語言有生產憂勢,可是它並非全部應用的最佳選擇,特別是一些大數量級的代碼和性能的應用。

優化動態語言,好比PHP,會比靜態語言,好比C來講會更具挑戰性。 對於靜態語言來講,優化能夠根據類型的信息來作決定。而對於動態語言來講,會更少的些類信息來作優化,這就使得動態語言的優化更加的困難。

然爾近來咱們看到了優化動態語言的進展(像JIT編譯),可是相對靜態語言來講它仍是處於劣勢。因此,若是你 須要一個高性能的工具,靜態語言可能更爲的安全可靠。

另外一個小的優點,靜態語言會額外的檢測代碼編譯的過程。編譯器不會發現邏輯錯誤,可是更重要的是編譯器能夠預先的知道 程序的錯誤。而對於動態解析語言來講,只有在執行的時候纔會發現錯誤。

Zephir既是靜態語言也是動態語言,你能夠很方便的使用二者語言的優點。

編譯方案

Zephir提供原代碼的生成(目前會編譯成C語言),像gcc/clang/vc++編譯器優化代碼並編譯成機器代碼,下面的一張圖片 演示了處理的過程:

../_static/img/scheme.png

Zephir除了提供這個外,在處理的過程當中,編譯器還會實施大量的優化來提升應用的性能。

代碼保護

在一些狀況下,編譯器並不會提升應用的性能,這多是因爲應用的瓶頸是I/O計算大於內存計算。 可是編譯代碼能夠起到對代碼的一種保護做用。經過Zephir,保護本地的文件,你徹底有能力去保護你的代碼,並 把它們帶給你的用戶和客戶。

結論

Zephir並非爲了代替PHP或C產生的,而是補充它們的不足,它容許開發者嘗試編譯和開發靜態語言。 Zephir是對PHP和C語言的一些優秀的一些東西的融合的一點嘗試,從而令得人的應用更加的快速。

相關文章
相關標籤/搜索