performance - 如何提高 Moose 在非持久 CGI 进程中的性能?

标签 performance perl cgi moose

Moose是一个奇妙的对象框架。问题在于,连同它的依赖关系,它非常大。我们的分析表明,在我们的平台上,简单地加载 Moose 将在非持久 CGI 应用程序脚本上产生 5-6 秒的开销。对于这些一次性应用程序来说,这是 Not Acceptable 。

相比之下,当我们使用持久化进程系统(如 FCGI)时,这种启动开销就被消除了(或者更确切地说,只发生一次),一切都很好。我们遇到的问题是我们不能保证我们所有的代码总是在一个持久化进程下运行。

我们使用 Mouse 进行了调查作为 Moose 的功能有限的替代品,但事实证明(如 this answer 中所述)这不是一个可行的选择。我们编写的任何与 Moose 一起使用的库都无法以微妙但重要的方式与 Mouse 一起使用。而且我们真的不想 fork 我们所有的模块,以便我们可以同时支持持久环境中的 Moose 和用于“ Vanilla ”CGI 的鼠标。

鉴于此,我们有以下选择:

  • 叉我们的内部模块酌情使用 Moose 或 Mouse。 (糟糕!)
  • 只为 FCGI/Moose 开发我们的模块 .不再支持“ Vanilla ”CGI。如果我们必须编写不持久的脚本,他们将无法利用我们的内部模块。
  • 不要使用 Moose 或 Mouse ,但其他一些对象框架。

  • 哪个选项最好?我们现在倾向于 2,如果我们必须让某些东西像普通 CGI 一样运行,我们只会把它吸干。其他框架呢?还有什么更轻量级的我们应该关注的吗?

    最佳答案

    我的偏好是放弃 Vanilla CGI 支持。现在 FCGI 托管真的很便宜,没有理由迎合普通 CGI (IMO),因为它只是强化了 Perl 速度慢的观点。但是如果你不能避免它,那么你可以使用像 Object::Tiny 这样的东西。 .但是,如果您需要 Moose 提供的角色、约束、元编程和所有其他可爱的东西,那么除非您放弃 Vanilla CGI,否则您将不走运。

    关于performance - 如何提高 Moose 在非持久 CGI 进程中的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410939/

    相关文章:

    java - 如何让java程序只运行1秒?

    perl - 为什么我应该在 Perl 中使用 <ARGV> 或 <> 而不是 <STDIN> ?

    perl - 无法在 Ubuntu 服务器上安装 CGIProxy 脚本

    python - 如何使用 `python -m SimpleHTTPServer 8000` 或 `python -m CGIHTTPServer 8000` 托管 python cgi 脚本?

    Python 字符串格式 : is '%' more efficient than 'format' function?

    C题: If I pass the address of a variable to a function that modifies it is there a guarantee that the variable will be "reloaded" after return?

    perl - Error 255 and "couldn' t find diagnostic data"when installing cpan Inline package

    Apache2 发送两个带有映射 "nph-"CGI 的 HTTP header

    performance - XPath 性能——哪一个更好?

    python - Moose 与 Python 的 OO 系统相比如何?