使用Java而不是SSJS时,量化性能提升

时间:2014-07-18 09:10:45

标签: xpages xpages-ssjs

在开发XPage应用程序时,主要使用Java方法和bean而不是服务器端JavaScript(SSJS)似乎变得非常流行。 SSJS当然需要更长的时间来执行,因为代码必须在运行时进行评估。但是,使用Java时,是否有人可以提供有关 QUANTITATIVE 性能提升的信息?是否存在执行时间差异的基准,例如,取决于SSJS代码的长度或使用的函数?

6 个答案:

答案 0 :(得分:6)

您必须使用自己的基准测试。时间的增加可能无法衡量。它更多地围绕功能和开发过程。从SSJS切换到Java,期望性能的即时提升很可能不会发生。

除非Java允许您以不同的方式编写代码。因此,大多数决策都是基于能力,而不是速度。欢迎您进行一些测试并分享见解。您可以期待什么,例如在SSJS与Java中打开文档:差异应该在舍入错误的空间中,因为下面的C调用需要大部分时间。

在评估了SSJS之后,SSJS和Java以几乎相同的速度运行,因此你有一些onramp时间和类似的速度。

答案 1 :(得分:5)

我同意性能提升可以忽略不计。我会插话说这个。现在我正在努力学习支持不使用任何java编写的现有XPage应用程序,完全在SSJS中。这里,那里,到处都有代码。这很难理解。

根据您的环境,在考虑如何构建应用程序时,应考虑程序员的工作效率,尤其是当您同时了解这两者时。为您和那些追随您的人带来生产力。

答案 2 :(得分:5)

斯蒂芬的回答恰到好处:虽然Java作为一种语言更快(你可能会看到性能增益与代码块的复杂性成正比,而不是运行的操作数),但主要的好处是程序结构。我的经验是,使用Java广泛使我的代码更清晰,更容易调试,并且在几个月后回到它之后更容易理解。

这种结构变化的一个好的副作用确实恰好是性能,但不是因为Java固有的任何东西:通过专注于类和getter / setter,它更容易真正关注昂贵的操作和缓存。虽然您可以使用各种范围在SSJS中高效地缓存数据,但是现在和您忘记明年所做的事情后,您的大脑更容易在Java中思考这类事情。

就个人而言,即使Java执行速度比SSJS慢,但XPage中的编程模型与现在相同,我仍然会主要使用Java。

答案 3 :(得分:3)

您在询问纯处理性能 - 运行代码的计算机的速度。正如史蒂芬所说,Java将成为一个小小的"更快,因为它不需要首先解析代码的字符串的额外步骤。在大图中确实没什么大不了的。

我认为真实的"表现"通过在XPage中迁移到Java获得的收益是具有更多功能的更清晰的代码。是的,您在SSJS库中添加了大量代码。这可以很好地工作。但是我认为这些是你一次又一次使用的个别功能,而不是你可以放在内存中的真实对象,而当你需要它们时它们就是它们。根据我的经验,当您在Java Objects中获得核心业务逻辑时,开发速度会明显加快。它甚至没有关闭。

获取Domino文档对象。这是一个非常方便的对象。想象一下,如果它不是一个"对象"但只是一个包含50个左右功能的库,您需要先将其粘贴到每个数据库中。似乎不对。当然,在Domino API中,它不仅仅是多米诺骨牌对象。有大约60个不同的对象!

Java开发的典型XPage移动很多 - 不是全部 - 但是大部分代码都是从.xsp页面转移到Java Classes中的,这些类与LotusScript上的自定义类非常相似。这不仅创建了前端代码之间的分离 - 使.xsp页面更容易使用 - 而是将业务逻辑放在Java中,这类似于处理Domino后端对象。因此,后端更易于使用,维护和添加。

这是开发速度改进的重要部分来源。

回到原来的问题,这是关于计算机速度的。我建议通过Java Objects和托管bean缓存经常使用的数据要容易得多,然后用SSJS。不必像往常一样快速打击光盘。

答案 4 :(得分:2)

我建议你在更广泛的背景下考虑性能提升。

  • 性能提升更快?
  • 打字时的性能提升?
  • 的性能提升因为编辑器而出错?
  • 在Java编辑器中使用模板的性能提升?
  • 性能提升了更好的可重用性,最终到服务器范围的插件?
  • 在轻松构建自己的类来容纳复杂对象时,性能会提高吗?
  • 性能提升,更容易调试?
  • 在验证器,转换器,阶段监听器,VariableResolvers等方面的性能提升?
  • 在舒适地查看扩展库以进行调查或扩展时获得性能提升?
  • 能否在StackOverflow或Google上更轻松地找到答案,因为您使用的是标准语言与专有语言?
  • 使用第三方Java代码(如Apache Commons,Apache POI等)的性能提升?

说实话,当你已经掌握了那么多,并了解在页面加载或部分请求期间运行了多少代码时,Java与SSJS的运行时性能增益相比,在可能的情况下使用加载而不是渲染。 Java对SSJS的影响要大得多,我甚至没有提到专业发展的成果。

答案 5 :(得分:1)

对于stackOverflow的答案,我的答案太长了,所以答应了here is a link to my blog post这个问题。基本上它与性能无关,但具有可维护性,可读性,可用性