我正在编写一个Merb应用程序,该应用程序使用SimpleDB和Tokyo Tyrant的组合进行存储。对于这两个数据存储,我通过为 list 中的每个值启动一个线程,然后合并结果集来实现 IN(list)类型功能。请记住,这是一个Web应用程序,我应该创建的线程数量是否有限制? Ruby 1.8.7,所以它们不是内核线程。
答案 0 :(得分:1)
线程对于你在这里尝试做的事情似乎是一种糟糕的方法,如果你不能使用JRuby,我只会完全放弃线程。但是,您可以创建一个加载数据库的ruby文件,并使用benchmark library对哪个数字最快进行基准测试。您可能也想查看使用的内存。
答案 1 :(得分:1)
对我来说,你的问题听起来是IO绑定的,因此单核心的多线程可能有所帮助。
大多数情况下,在您的主Ruby循环中,您可能会等待在单独的多线程进程中运行的tokyo tyrant和simple DB。
那么多少线程?谁知道?您将不得不基准和衡量。
答案 2 :(得分:0)
如果您正在使用MRI,那么在这种情况下使用线程将不会有很大的帮助,因为MRI使用的绿色线程在计算操作方面没有帮助。我相信使用JRuby(本机线程)会有所帮助。 我一直听说,对于本机线程,最好使用(核心数+ 1)来利用可用的核心。