为大规模IO操作服务器选择哪种技术

时间:2010-07-01 21:28:18

标签: java c++ optimization cross-platform

我需要构建简单的服务器

  1. 读取(可能很大)xml文件
  2. 在内存中处理它们(例如将它们转换为不同的xml结构)
  3. 将它们写回磁盘。
  4. 该计划的一些重要方面:

    • 速度
    • 分发服务器的能力。这意味着放置(这意味着什么)几个这样的服务器,每个服务器将处理不同数量的xml文件。
    • 跨平台
    • 建立在一个非常紧迫的死线

    基本上我的问题是:
    我应该用什么编程语言呢?

    Java?

    • 发展速度
    • 跨平台
    • 使用正确的配置进行IO操作(在此处添加网络链接)。

    C ++?

    • 执行速度
    • 跨平台(使用正确的库)。
    • 然而发展速度较慢。

3 个答案:

答案 0 :(得分:7)

您可能希望查看ETL或XSLT引擎,而不是使用低级语言对其进行编码。它们针对性能进行了优化,超出了您通常能够自己生成的性能,并且足够广泛以适应用户更改(不确定您的XML转换是一次性的,还是随着时间的推移而变化)。 / p>

答案 1 :(得分:1)

我对你的要求仍然有点模糊但是

你问的是错误的问题。如果语言确实不是问题,那么您应该寻找可以处理大量磁盘io的第三方库,这是一个执行XSLT的库。查看两种语言存在哪些库然后选择。

此外,如果性能是关键要求,则需要确定进程是IO绑定还是CPU绑定。这将决定需要使用库以及通用架构。 xml转换是cpu密集型的吗?或者可以通过一次或两次传递解析轻松完成?

答案 2 :(得分:0)

截止日期紧迫?需要并行操作给定?那么速度不是问题。只需向其投入更多服务器,直到您的吞吐量与需求相匹配。

如果你的Java速度更快,那么请继续。您可能需要两倍的服务器数量,但这些服务器可以在几天而不是几周内构建。

在紧迫的期限内,便携性永远不是必需品。只要询问是谁设定了这些截止日期,他是否做出了任何不可逆转的选择。如果是这样的话,坚持下去;如果没有,选择一些并坚持下去。您没有时间在不同的平台上进行测试,因此无论如何,您拥有的任何可移植性都是理论上的。