【问题标题】:Rails meta programming and performanceRails 元编程和性能
【发布时间】:2011-08-03 16:02:48
【问题描述】:

Rails 约定强制框架和 gem 编写者广泛使用反射/元编程。我一直认为元编程效率较低,并且随着使用越来越多的 gem 的趋势,问题是 - 性能影响是什么?

【问题讨论】:

  • 我认为这与 Rails 约定无关。使用元编程可以更轻松地解决(以及以后维护)很多事情。
  • 它与约定有关,因为大多数方法都是通过通配符处理的(看看 activerecord,actionpack 等等)。虽然对于以配置为规则的框架/语言,框架很少使用方法反射,例如 J2EE
  • Java 和 Ruby 如此不同,以至于在您接触 Web 框架之前,所有可能的比较都失败了。顺便说一句,“元编程”是一个如此广泛的术语(正如@shingara 已经提到的)。您是否主要想到了method_missing
  • 是的,我知道它们是不同的,Java 示例只是为了明确我所说的元编程需求的含义,这些需求源于 Rails 的约定优于配置理念。 method_missing 为一,内省如respond_to?、class等

标签: ruby-on-rails ruby reflection metaprogramming


【解决方案1】:

程序员生产力 >> 软件性能(通常)

真的,不用担心这个……在实践中正确的算法、正确的架构、正确的数据库模型等等比纯语言性能重要得多……

X 不是花在对抗语言上的努力(java xml hell,c 编译)是花在设计更好的算法和用户体验上的努力,这会产生更好、更用户友好的应用程序

【讨论】:

  • 虽然您的说法适用于大部分网络应用程序(大多数应用程序在其生命周期中可能无法达到高流量),但我担心的是过度反射in rails 不适合极高流量的网站
  • 最后一句话听起来像是“不适合极高流量的网站”。更好的说法是,如果存在与反射相关的陷阱,一旦我们需要维持性能,我们就需要开始放手,类似于有时使用 SQL 查询,而不是仅仅依赖 ORM
【解决方案2】:

真的取决于什么样的元编程。有些在运行时不会影响性能。只是启动有点慢。

对您的案例进行基准测试,看看会产生什么样的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多