LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1808|回复: 13

好象用scheme开发的cgi速度更快呢

[复制链接]
发表于 2004-8-14 14:45:23 | 显示全部楼层 |阅读模式
好象用scheme开发的cgi速度更快呢
发表于 2004-8-15 00:10:01 | 显示全部楼层
scheme是解释类语言,用它开发的cgi程序要比编译类语言如c、pascal等开发的cgi程序运行的速度慢,但在硬件如此发达的今天,两者间的差距已经很小了。
如果是和perl等解释类语言写的cgi程序进行比较,通常在速度上也不会有太大的差异。
发表于 2004-8-15 00:46:23 | 显示全部楼层
你可以试试对数据库进行10000次的insert操作和10000的update操作
就知道哪个快了
发表于 2004-8-15 11:54:56 | 显示全部楼层
通常执行解释类语言开发的cgi程序对数据库操作,会在三个方面造成性能损失:
1.执行cgi需先启动解释器进程;
2.解释类语言要进行类型检查;
3.非c语言开发的cgi程序要调用数据库功能(通常是c接口)要进行类型转换;

采用mod方式执行解释类语言编写的cgi程序时,第1点损失可以避免;由于是数据库记录操作,字段长度相对恒定,解释类语言在第2点上的性能损失会进一步缩小;再看第3点,类型转换从机器的角度来看只是将一个数组转换成另一个数组,通常在性能上的差异取决于要实现转换的两种语言数据类型的相似度和复杂度上,这时开发人员能力也起到了很大的影响,怎样来平衡灵活度和复杂度。
在shceme中数据结构非常单纯,就是pair(象汇编?呵呵),复杂结构都是由它构造出来的,在类型转换上速度相当快;Perl数据类型要复杂许多,不过我只简单学习了一下,没有发言权,PHP采用何种方式集成数据库我也不清楚,没有发言权。

这样看来两类cgi程序,运行速度上的差距肯定是有,而且数据量越大,差距越大,但同时要看到,数据量增大的同时数据从网络无差错地传到服务器所需要的时间,事务逻辑对数据进行加工的时间,数据库进行insert、update等操作中发生在内存与数据库存储介质之间进行数据读写等待的时间也在增大,增大的速度比起前者要快得多。这时候,我们看来前者的差距实际上是越来越小的。
 楼主| 发表于 2004-8-16 08:45:31 | 显示全部楼层
我觉得 scheme开发的程序如果长的话,太难读了。。
再说scheme能做到的perl,python都能做到,而且模块更多,用的人也多,解决问题也方便,唉。。不想再去学新语言了
发表于 2004-8-16 23:56:17 | 显示全部楼层
我觉得 scheme开发的程序如果长的话,太难读了。。

任何程序写长了都有这种问题,写程序人的水平,读程序人对语言的熟悉程度也有一定的影响。
再说scheme能做到的perl,python都能做到,而且模块更多,用的人也多,解决问题也方便,唉。。不想再去学新语言了

的确,如果仅仅要开发cgi,而且已经熟悉perl/python,没必要学新的东西。cgi开发也是不scheme的优势所在,用scheme做分布式系统框架非常理想。
 楼主| 发表于 2004-8-17 14:09:29 | 显示全部楼层
那请教下scheme有GTK等图形库吗,能否开发图形程序或数据库程序?
发表于 2004-8-20 20:38:21 | 显示全部楼层
gtk倒是有scheme的bindings,数据库也可以用scheme来写,至于效果如何,我就不知道了。
不过,scheme到目前为止,我认为还不适合底层开发。现在,要想得到scheme的全部功能,就得用scheme解释器。scheme编译器都不支持诸如tail recursive和continuation等高级功能,也没有GC。不知那位大侠了解pre scheme,反正它宣称在今后要加入简单的continuation。

呵呵。。。要知后事如何,且听下回分解。
发表于 2004-8-21 09:22:39 | 显示全部楼层
最初由 ak70 发表
scheme编译器都不支持诸如tail recursive和continuation等高级功能,也没有GC。不知那位大侠了解pre scheme,反正它宣称在今后要加入简单的continuation。

呵呵。。。要知后事如何,且听下回分解。


不知你是从哪了解到这些信息,严重歪曲了真实情况,请先读一下scheme的语言规范,核实信息后再发帖,以免对更多人造成误导!
<Revised5 Report on the Algorithmic Language Scheme>
http://download.plt-scheme.org/doc/208/html/r5rs/r5rs.html
以及各guile、drscheme、MIT scheme、bigloo等成熟实现版本的文档。
发表于 2004-8-21 18:28:11 | 显示全部楼层
pre scheme是用于系统开发的一种dialect,旨在解决scheme执行效率相对较低,不适合系统底层开发的问题。scheme48就是用它写的。目前,pre scheme的编译器也是把scheme先翻译成c代码然后在用c的编译器编译,不过开发者们好像有计划让它直接产生汇编代码(现在,绝大多数的scheme都是以c为中间层)。
它和RnRs没什么太大的关系,不过现在它也在向R5RS靠拢。
http://mumble.net/~kelsey/papers/prescheme.ps.gz
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表