在Joel& Sons的第78集中。杰夫播客Doctype / Litmus的一个人说你永远不想在红宝石中建造蜘蛛。有人想猜测他的推理吗?
答案 0 :(得分:15)
无论如何,爬虫需要多快?这取决于您是在紧张的时间表内抓取整个网络,还是在一个网站上从几十个页面收集数据。
使用Ruby和nokogiri库,我可以阅读this page并在0.01秒内解析它。使用xpath从解析的页面中提取数据,我可以在0.16秒内将所有数据转换为特定于域的对象。全部223行。
我遇到越来越少的传统约束(cpu / memory / disk)问题。这是一个充足的时代。如果资源不是限制因素,请不要问“机器有什么用处”。问“对人类有什么好处?”
答案 1 :(得分:4)
在我看来,这只是一个规模问题。如果您正在为自己的个人使用编写一个简单的刮刀,或者只是每天在一台机器上运行几次,那么您应该选择一些涉及更少的代码/工作/维护难度的东西。这个ruby是否是一个不同的问题(我选择Groovy而不是Ruby来执行此任务=>更好的线程+非常方便的XML解析)。另一方面,如果您每天要抓取数TB的数据,那么应用程序的吞吐量可能比缩短开发时间更重要。
BTW,任何人都说永远不会想要在某些情况下使用某种技术或其他技术很可能是错误的。答案 2 :(得分:1)
你不会从Ruby中获得所需的性能。请参阅参考链接:http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
虽然像这样的性能测试应该采取多种方式,但Ruby和顶级(速度)语言之间存在相当大的差异。
编辑:对于我回答加载的问题感到羞耻。总而言之,选择一种语言是一系列的权衡,从性能到个人偏好,你的效率是多少。编程之美是所有这些语言都可供你使用,所以你可以测试什么有效最符合您项目的要求。我的建议是试验并找出最适合你的方法。
答案 3 :(得分:0)
OG说的是什么。简单来说,Ruby很慢,如果你希望每单位时间完成很多工作,那就是错误的语言选择。