Сколько потоков в Ruby слишком много? - PullRequest
3 голосов
/ 14 декабря 2009

Я кодирую приложение Merb, которое использует комбинацию SimpleDB и Tokyo Tyrant для хранения. Для обоих этих хранилищ данных я реализую IN (список) функциональность типов, раскручивая поток для каждого значения в списке и затем объединяя наборы результатов. Учитывая, что это веб-приложение, есть ли ограничение на количество потоков, которые я должен создать? Ruby 1.8.7, так что они не являются потоками ядра.

Ответы [ 3 ]

1 голос
/ 14 декабря 2009

Потоки кажутся плохим подходом к тому, что вы пытаетесь сделать здесь, и если вы не можете использовать JRuby, я бы просто отбросил потоки. Тем не менее, вы можете создать файл ruby, загружающий базу данных, и использовать библиотеку тестов , чтобы провести сравнительный анализ числа, которое является самым быстрым Вы, вероятно, хотите посмотреть на используемую память тоже.

1 голос
/ 15 декабря 2009

Мне кажется, что ваша проблема связана с IO, поэтому многопоточность одного ядра может помочь.

Большую часть времени в вашем основном цикле Ruby вы, вероятно, будете ожидать токийского тирана и простой БД, которые выполняются в отдельном многопоточном процессе.

Так сколько потоков? Кто знает? Вам нужно будет проверить и измерить .

0 голосов
/ 14 декабря 2009

Если вы используете MRI, то использование потоков в таких случаях не будет большой помощью, так как MRI использует зеленые потоки, которые не помогают в вычислительных операциях. Я полагаю, что использование JRuby (нативные темы) будет полезно тогда. Я продолжаю слышать, что для нативных потоков лучше использовать (количество ядер + 1), чтобы использовать доступные ядра.

...