我正在创建一个Ruby on Rails应用程序,它将使用相当复杂且耗时的算法。
我正在考虑用C或C ++函数实现它们。
如果有任何在网络应用程序中实现复杂算法的经验可以给我一些关于该做什么的指示,我会再次感激。
我的假设是Rails本身太慢,使用C或C ++更好。如果是这种情况,你如何用C或C ++实现alghoritm并用Ruby on Rails调用它?
答案 0 :(得分:0)
好的,这是一个非常模糊的问题,但可以进行有趣的对话。
通常,您所描述的问题不是技术问题,而是业务问题。 rails的一些巨大优势是开发,维护等的速度.C和C ++也是很好的工具,但是在C中构建与rails相同的东西往往需要更长的时间。这意味着它更贵。
此费用正在持续。 使用rails,您将失去一些性能,这将需要更多的硬件。这笔费用正在持续。
让我们假设复杂算法是一个长期运行的函数,可以定义为User类中的以下事件。
def DoIt() 睡10000 端
现在让我们假设您需要一次为很多项目发生这种情况。每分钟说10000个用户。
如果我们在一个简单的线性过程中这样做,我们将看到每分钟10000 * 10000的运行时间。那不是bueno。
幸运的是,这些问题一直在解决。 我们正在讨论的是垂直与水平缩放。
垂直: 让我们假设如果你用c写它,函数就相当于:
def doIt 睡5000 端你已经获得了50%,这很棒。问题是,如果您的用户负载增加,您最终会遇到麻烦。我们一直在生产系统中看到这一点。
所以现在的问题是你如何横向扩展它。
使用resque(或100个解决方案中的任何一个),您可以将此工作踢到后台并分发它。 然后,您可以添加服务器以处理进入系统的负载。
现在的问题是,是否值得用c / c ++构建它的成本,还是你更好地在rails中构建它并支付额外的硬件?或者从rails开始是否更好,如果需要,在原型完成后移动到c ++ / C并验证是否需要它。