这几天在想办法优化自己参与的项目,无意中看到这个视频。
最后的压测差距好多,不知道在完整的项目中差距是不是这么大。
看完了视频,Phoenix 确实快。
实际中由于网络,数据库,IO 的延时,倍数上差距没这么大。比如视频中是 30ms vs 0.5ms,60 倍,两者都加上 20ms 的其他处理,最后变成 50ms vs 20.5ms,2 倍。
考虑到 Rails 大部分功能都帮你做了,但是 Phoenix 相对少一些,有很多功能你在实际中必须要处理,于是你自己写,又会消耗一些延时。可能最终的结果在 1.5 - 2 倍之间。
语言上,Ruby vs Elixir 大部分场景确实是 Elixir 快。但是 Web 应用中,如果不是业务非常简单的纯高频请求,那么语言优势会被网络,数据库,IO 抹平,整个功能栈一模一样的情况下,最终差别一般不超过 3 倍。
1.5 - 2 倍,值不值得换生态环境,就看你自己的决定了。
谢谢回复,确实实际项目中影响速度的因素很多,如果是这样的结果,目前来看我还是会用 Rails。
昨晚看完这个视频就在社区里翻了翻 elixir 相关的贴子,感觉很值得学习了解一下,打算近期抽时间学习用 phoenix 做个小应用试试。
Counter Argument, for site like stack exchange, ( https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ ) Where in average they spend less then 5ms in Database, the speed is 35ms vs 5.5ms, ( ~ 6x ) .
Yep! It depends on the complexity of the business system and your hardware budget. :-)
小破站才用 Erlang。小破站换 Erlang 是大势所趋。
ActionCable 什么的,功能极其有限,难用的要死 ...
先学的 python,如果是先学的 ruby,估计肯定是个 rails 粉。学 Elixr 主要是因为 py 速度实在太慢,当然优化一下也能快起来,但是有一门不需要优化就很快的语言,为啥不学?因为不会 ROR,所以只能比较一下 py 的框架感受。至少到现在为止,我再也不想用 py 的 web 框架了。
其实我是不认可全栈的说法的,这世上没有全能的工程师,总有弱点,自以为全能的阵营,很可能是各方面只做了 50%(哦不,甚至 25% 都不到的用例,然后自己自满骄傲的觉得自己全能)。全栈是占有欲强的人世界观,实际上公司如果给你这时间各处研究,去一点点实现,很多市场都死了。
我觉得 Elixir 或者 Phoenix 对比 Rails 更多的是代码的清晰度,还有 OTP 的加成,对于 Benchmark 性能,反倒不是那么重要了。