备选的有
1. 静态文件html+keepalive
2. 静态文件html, 无keepalive
3. ssi(服务器端包含, server side include)
4. perl cgi
5. c cgi
6. mod_perl
7. php
8. perl fcgi
9. c fcgi
10. java
最简单的web环境下, 例如只是个hello world, 在每秒处理请求数上, 性能大致如下(越大越慢):
1. x 1
2. x 1.47
3. x 2.66
4. x 168.25
5. x 46.41
6. x 6.73
7. x 7.48
8. x 5.14
9. x 2.68
10. x 2.2
web环境若是复杂起来, 那就没准了, 不过每种语言在复杂web环境下的表现都会各有特色了.
1) 和 2) 两种的问题是如果静态文件非常多, 例如几百万个, 那你的服务器磁盘就吃不消了, 用squid挡前面加上urlHash能消除一些这样的问题, 但更新的时效性就弱了, 哪些页面的数据对或者不对, 也够你审校的. 3) 也受此类影响
3) ssi的问题是高不成低不就, 作为模板或者作为业务数据插入, 都太不够强. 作为往大段静态文本里插入少量动态数据还有点用处, 不过现在都用ajax load了, 所以这种用法也过时了
4) 和 5) cgi也是个过时的东西了, 用作不会大并发的应用还可以, 例如大文件上传
6) 和 7) 都是既简单又效率还行, 配合架构性的其他组件, 更能发挥快速开发的优点. 6) 在国内不够流行, 但比7)强大多了, 例如server级别的cache/数据库连接池/内嵌的cron等, 正儿八经应该有的配件, 7)都没有.
8) 和 9) 性能够赞吧, 前提是你能玩得转. 8 ) 还好些, 只是国内不够流行, perl又日益没落; 9) 由于没有统一且好用的内存管理, 封装和集成, 非侵入的container/collection, 连个string或stringbuffer都没有, 就要自己自己写一大堆的组件, 能借用的太少了.
10) 看起来很诱惑, 但java的问题就是业务复杂以后, 对象数膨胀的太快, 垃圾回收是被动的, 而且java让大多数人写出很脏很不小心的代码, 复杂应用java慢过php一点也不稀奇.
最后再给个非web环境下(没有webIO和connection的消耗)的各语言的性能比较:
(出处是debian的: http://shootout.alioth.debian.org/)
c++ x1
c x1.09
java6-server x1.79
python x43.26
php x44.72
perl x70.67
ruby x124.21
备注一下, c vs java == 1.7x?, 如果计算复杂度是10x, 那 c vs java == pow(1.7, 10) == 201x. c vs php == 44x?, 如果是写web页面, 字符串拼接或字典遍历方面, 10x的复杂度, 可能也就是个10x(不过php是解释执行, 执行时还要load一堆extension, 打开一堆句柄)
分享到:
相关推荐
如何看编程中的时间复杂度
是Googel黑板报数学之美作者吴军,发表在电子学报上的名为“汉语信息熵和语言模型的复杂度”的文章
编程语言-C语言代码分析与函数时间复杂度计算的研究.pdf
堆排序 归并排序 选择排序 快速排序 插入排序 可选择数组初始状态(随机、正序、逆序) 通过输出的时间可以更好地比较在不同数组状态下 各种排序算法的时间复杂度
是Googel黑板报数学之美作者吴军,发表在电子学报上的名为“汉语信息熵和语言模型的复杂度”的文章,通过CAJviewer工具可以查看到该论文的全文,之前pdf格式的文件只能显示前两页的内容.
中潜伏期响应在不同复杂度刺激声下的变化规律,李林峰,宫琴,本研究的目的在于探索不同的刺激声对于中潜伏期响应的影响,并研究信号随刺激复杂度的变化规律。实验中使用到了4种不同种类共8个�
摘 要: 建立红外图像复杂度度量尺度与目标检测性能之间定量、准确和严格的函数关系,并进行严格的 数学证明是目前红外目标检测领域亟需解决的问题之一。利用去均值归一化相关算法检测目标,采用偏 最小二乘法同时...
【Python基础入门教程 Python语言编程导论】课程列表 Python基础入门教程 Python语言编程导论 Python应用案例1 (共12页).ppt Python基础入门教程 Python语言编程导论 Python应用案例二 (共24页).ppt Python基础...
算法 时间复杂度 空间复杂度 经典算法 时间复杂度 空间复杂度 经典算法 时间复杂度 空间复杂度 经典
在原始WebGL 2中实现不同复杂度的渲染算法
如何克服发射信号的重叠和码间干扰是MIMO系统信号检测技术面临的关键问题。信号检测算法的性能优劣是...仿真结果表明:无论信道在何种复杂环境下,该算法具有与MLD算法几乎相同的误码性能,计算复杂度也有很大的改善。
圈复杂度插件
数据结构时间复杂度
计算Lempel-Ziv 复杂度,用于计算相对复杂度等
c/c++阵连乘,编译不错,挺好的!大家可以过来试试。还有源代码和题目描述和算法复杂度的解析。
根据sonar分析结果,获取圈复杂度和方法来计算最大平均圈复杂度。
可以方便的计算信号或时间序列的复杂度,用于信号处理,特征提取等方面
时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度时间复杂度...
从立体几何问题看降低编程复杂度.ppt
复杂度资料整理,复杂度的定义说明和三种计算方式,一些范例