我有一个小的轻量级应用程序,用作更大的解决方案的一部分.目前它是用C语言编写的,但我希望使用跨平台脚本语言重写它.该解决方案需要在Windows,Linux,Solaris,AIX和HP-UX上运行.
现有的C应用程序工作正常,但我希望有一个我可以为所有平台维护的脚本.与此同时,我不想失去很多表现,但我愿意失去一些.
脚本的启动成本非常重要.可以在每秒每分钟到多次的任何地方调用此脚本.因此,保持其内存和启动时间较低非常重要.
所以基本上我正在寻找最好的脚本语言:
跨平台.
能够进行XML解析和HTTP帖子.
内存不足,启动时间短.
可能的选择包括但不限于:bash/ksh + curl,Perl,Python和Ruby.对于这种类型的场景,您会推荐什么?
Lua是一种符合您标准的脚本语言.它肯定是最快和最低内存脚本语言.
由于您需要快速启动时间和大于1Hz的呼叫频率,我建议您继续使用C并确定如何使其便携(并不总是像一些ifdef一样简单)或探索将其转换为始终运行的服务守护程序.当然这取决于如何
如果编译模块并运行.pyc文件,Python可以降低启动时间,但通常认为它很慢.根据我的经验,Perl使用最快的脚本语言,所以你可能会对perl守护进程好运.
您还可以查看gtk,wxWidgets和Qt等跨平台框架.虽然他们的目标是GUI,但他们确实拥有低级别的跨平台数据类型和网络库,可以更轻松地使用快速的基于C的应用程序.
"从每分钟到每秒一次调用任何地方.因此,保持记忆和启动时间低是非常重要的."
这对我来说听起来不像是一个剧本.
这听起来像是服务器处理从每分钟到几秒钟到达的请求.
如果它是服务器,处理请求,启动时间并不像响应性那么多.在这种情况下,Python可能运行良好,并且仍然保持性能提升.
您只需处理另一个请求,而不是重新启动.您可以保持尽可能多的状态以优化性能.
如果写得正确,C应该是平台无关的,只需要重新编译那些不同的平台.您可能必须跳过标题的#ifdef箍(并非所有系统都使用相同的标头),但大多数正常(非win32 API)调用都非常便携.对于Web访问(我认为你需要提到bash + curl时),你可以看看libcurl,它可用于你提到的所有平台,并且不应该那么难用.
考虑到执行时间和内存成本,我怀疑你可以比使用任何脚本语言正确编写C更快,因为你至少会在解释脚本时失去一些时间......