c++ - 使用 Ruby on Rails 进行复杂算法

标签 c++ ruby-on-rails c ruby ruby-on-rails-4

我正在创建一个 Ruby on Rails 应用程序,它将使用一些复杂且耗时的算法。

我正在考虑使用 C 或 C++ 函数来实现它们。

如果任何有在 Web 应用程序中实现复杂算法的经验的人能给我一些指导,我将不胜感激。

我的假设是 Rails 本身太慢,最好使用 C 或 C++。如果是这种情况,如何用 C 或 C++ 实现该算法并使用 Ruby on Rails 调用它?

最佳答案

好吧,这是一个非常模糊的问题,但却是一次有趣的对话。

一般来说,您描述的问题并不是真正的技术问题,而是业务问题。 Rails 的一些巨大优势是开发、维护速度等。C 和 C++ 也是很棒的工具,但用 C 构建与 Rails 中相同的东西往往需要更长的时间。这意味着它更贵。

这笔费用是持续的。 使用 Rails,您将损失一些性能,这将需要更多硬件。这一成本仍在持续。

让我们假设复杂算法是一个长时间运行的函数,可以定义为 User 类中发生的以下情况。

def DoIt() sleep 10000 结束

现在我们还假设您需要一次对很多项目进行这种操作。假设每分钟有 10000 个用户。

如果我们以直线过程执行此操作,我们将看到每分钟 10000*10000 的运行时间。这可不是好事。

幸运的是,这些问题一直都得到解决。 我们正在讨论的是垂直缩放与水平缩放。

垂直: 假设如果你用 c 语言编写它,该函数就相当于:

def DoIt sleep 5000 结束

您已经获得了 50% 的 yield ,这太棒了。问题是,如果您的用户负载增加,您最终会遇到麻烦。我们一直在生产系统中看到这种情况。

所以现在的问题是如何水平扩展它。

使用 resque(或数百个解决方案中的任何一个),您可以将此工作踢到后台并分发它。 然后,您可以添加服务器来处理进入系统的负载。

现在的问题是,用 c/c++ 构建它的成本值得吗?或者你最好用 Rails 构建它并支付额外的硬件费用?或者最好从 Rails 开始,如果需要,在完成原型(prototype)并验证是否需要时转向 C++/C。

关于c++ - 使用 Ruby on Rails 进行复杂算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25039647/

相关文章:

ruby-on-rails - Rails 'rake test' 在创建新的 Rails 项目后立即运行两次测试

javascript - 访问 Rails 资源时忽略 URL 中的范围区域设置

c - 将int舍入到最接近的以0结尾的更大的int(C语言)

c++ - 如何在静止图像opencv c++中执行canny edge后识别汽车

c++ - boost asio异步等待条件变量

ruby-on-rails - Rspec:ActionMailer::Base.deliveries 总是空的

c - K&R 中发现的 C 问题中的二叉树实现

c - gcov: 无法打开图形文件

c++ - Quicksort 中相等值的比较

c++ - 插入排序问题?