我有一个Web应用程序项目,其中的性能最重要,我可以选择使用的技术.
与Web应用程序无关的语言管理基准测试.
你认为什么是最合适的候选人?
谢谢!
一位朋友在IRC上建议使用gwan服务器.看起来像我在寻找,但我以前从未听说过.有这方面经验的人吗?易用性,可靠性?
在我离开Apache之前,我想了解你的想法.
如果性能最重要,请不要使用脚本语言.特别是因为您可以完全控制技术堆栈.编译语言对CPU密集型操作的性能更佳.
G-WAN是一个整洁的网络服务器:它基于"C脚本"概念:
AC脚本只是C源代码,由Web服务器编译,然后加载到受保护的内存中.当向servlet发出请求时,Web服务器将调用它.由C编译器编译的servlet与正常编译C程序一样"快".但是,C脚本(例如CGI或FastCGI)的优点是编译的程序与Web服务器位于相同的内存空间中.这减少了通信的开销(通过创建进程,在CGI的情况下,对于每个请求,或者为FastCGI的套接字).
Web服务器正在使用select/poll技术:非阻塞I/O. 但是,它有一个很好的东西.每个程序都可以像使用阻塞I/O一样编写.由于Web服务器本身编译每个C脚本,它可以将程序转换为使用非阻塞I/O. 在此,它可以将自身链接到第三方库(如数据库访问),并仍然使用非阻塞I/O性质:没有线程/进程上下文切换.
例如,为C脚本编程提供的工具是缓存和安全缓冲区.下一篇(撰写本文时尚未发布)版本还将包括一个Key-Value商店.
性能方面:有一些基准测试表明它的性能优于其他任何网络服务器,但我不相信这些.尝试用C语言编写一个小型CPU密集型程序,例如PHP.让C脚本在G-WAN和Apache上的PHP脚本上运行,并自己做一个基准测试.
还有更多,但这超出了这个问题的范围.
G-WAN的一些缺点是它只由一个人开发.但是,有一个论坛可以提问.
易用性受到C技能的限制.但是,提供的API很简单.它仍然有一些不一致和(在我看来)丑陋的部分,但这不是一个问题.一个更严重的问题是,不保证每个版本都是向后兼容的,您可能需要重写.
如果您想要安全:使用C的平台独立性:允许您的代码编译为(快速)CGI程序,也可以由G-WAN使用.可能G-WAN失败,您可以随时回退到Apache的(快速)CGI(请参阅http://www.fastcgi.com/获取API).
首先确定您的应用程序性能是否确实取决于语言或其他一些因素(例如数据库请求)。缓存结果的能力也是一个非常重要的因素。
就性能而言,所使用的语言在要检查的重要点列表中占据相当大的位置,并且用例也会影响哪种语言更好。例如,如果您有许多正则表达式要检查,您应该检查候选语言中的正则表达式支持,等等......
对于图像处理,最重要的一点可能是您使用的底层图像库,通常是用 C 编写的。我想到了 ImageMagick 的情况,因为我目前正在使用它。它可用作大多数语言的库,并且脚本语言层仅需要调用库的函数,并且该级别使用的语言不会发生太大变化(但缓存预先计算的结果图像可能会大幅改变性能)。此用例可能与调用加密库类似。
如果性能确实是一个问题,对于图像处理,您还可以考虑使用与 GPU 加速卡配合使用的库(支持 cuda 或 openGPU 的库)。