文档章节

[Zephir官方文档翻译之二] 为什么选择 Zephir?

风一样的世界
 风一样的世界
发布于 2014/09/26 12:34
字数 1649
阅读 435
收藏 1

为什么选择 Zephir?

目前的PHP应用必须使用得稳定性、性能、和功能性保持平衡。 每一个PHP应用是建立在大量的通用组件上的,而这些组件又基于大量的其它应用。

这些通用的组件可能是一个类/框架,或者是它们的结合。一但它们被安装,框架很少会改变。 作为一个应用的基础,它们必须保持很高的功能性,同时也要保持速度优势。

快速强大的类库会变得很难懂,这是由于它们是高度抽象的实现的。考虑到这些基本的类库和框架很少会改变, 这就为编写一个可以提高性能和节省计算机资源的扩展提供了一个机会。

通过Zephir,你可以实现面向对象的/框架/应用,并使你的PHP程序提高到一个高的层次,让你的应用更快,同时改善用户的体验。

如果你是一个PHP程序员...

PHP是众多流行的网站应用开发语言之一。 像PHP这种动态解析语言,因为它的灵活性,为应用开发提供了很高的生产力。

从4.x到5.x版本,PHP开始基于Zend引擎实现。Zend引擎其实是一个用来执行PHP代码的字节码实现的虚拟机。 Zend引擎几乎出现在每一个安装PHP的机器上,而通过Zephir,你可以建立运行在Zend引擎的PHP扩展。

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语言的一些优秀的一些东西的融合的一点尝试,从而令得人的应用更加的快速。


© 著作权归作者所有

风一样的世界

风一样的世界

粉丝 16
博文 47
码字总数 14443
作品 1
广州
高级程序员
私信 提问
zephir-(1)开篇介绍

先在这里感谢各位zephir开源技术提供者 笔者在学习phalcon的过程中了解到,phalcon2.x版本通过了zephir重写,第一感觉是zephir这么牛逼?笔者赶紧尝试了一下,果不其然非常简单的就能写出一个C扩...

喵了_个咪
2016/02/26
690
1
[Zephir开发实践]用Zephir编写PHP扩展实践

场景描述 首先,还是强烈推荐一下Phalcon这个框架。 由于对这个框架很感兴趣,所以看了其官方文档,并在先前用PHP根据其思想写了两个Phalcon核心类,见链接: #年前福利#Phalcon框架部分核心...

暗夜在火星
2014/06/26
440
0
为什么叫Phalcon7?

因为Phalcon2.0之前,我一直参与Phalcon的开发,对之前的版本有感情。这个只是对Phalcon1.3的延续,而不是想另起炉灶。为什么加7,因为我一共维护了两个分支,一个支持php5系列,一个支持P...

朱宗鑫1
2016/10/13
389
0
[Zephir官方文档翻译之四] 安装Zephir

安装Zephir 为了安装Zephir,请根据下面的步骤来做: 预备知识 使用Zephir来编译PHP扩展,下面的一些软件是必须的: gcc >= 4.x/clang >= 3.x re2c 0.13 or later gnu make 3.81 or later au...

风一样的世界
2014/09/26
168
0
[Zephir官方文档翻译之三] 介绍 Zephir

介绍 Zephir Zephir是一种可以让PHP开发者尝试编写和编译可以被PHP执行代码的一种语言。它是动态/静态类型,它的一些特性对于PHP 开发者来说是非常的相似的。 Zephir的名字是取自Zend Engine...

风一样的世界
2014/09/26
294
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 小结及习题

小结 HTML表单提交的方法有get方法和post方法,get方法的作用是从指定的资源请求数据,post方法的作用是向指定的资源提交要被处理的数据。HTML表单一直都是Web的核心技术之一,有了它我们才能...

老码农的一亩三分地
19分钟前
12
0
向maven工程中导入自己封装好的jar包方法

1.打开cmd窗口 输入并执行:mvn install:install-file -DgroupId=com.test   -DartifactId=ptest -Dversion=0.1  -Dfile=E:\test\test-0.1.0.jar    -Dpackaging=jar注:Dgr......

gantaos
21分钟前
3
0
【jQuery基础学习】09 jQuery与前端(这章很水)

本文转载于:专业的前端网站➨【jQuery基础学习】09 jQuery与前端(这章很水) 这章主要是将如何将jQuery应用到网站中,或者说其实就是一些前端知识,对于我这种后端程序来说其实还是蛮有用的...

前端老手
32分钟前
11
0
深度科技与金山云完成兼容互认证 共同促进我国软件生态发展

近日,深度科技与金山云完成兼容互认证工作,经双方共同严格测试,深度操作系统ARM服务器版软件V15与金山云分布式数据库软件DragonBase V1.0相互兼容、稳定运行,可以为企业级应用提供全面保...

后浪涛涛
33分钟前
7
0
Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
49分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部