У меня есть сборка Ant, которая отлично работает в Windows, но, кажется, отслаивается, когда я ее беру перешли на Linux. Проблема здесь:
[xslt]
java.lang.ClassNotFoundException
:org.apache.tools.ant.taskdefs.optional.TraXLiaison
Я уже пробовал следующее:
xalan.jar
, xercesImpl.jar
и xml-apis.jar
в каталоге $ ANT_HOME / lib
. Я использую экземпляр Linux EC2 (базовый 64-разрядный AMI Amazon Linux 2011.02.1 Beta (идентификатор AMI: ami-8e1fece7) Amazon Linux AMI Base 2011.02 .1, загрузка EBS, 64-разрядная архитектура с Amazon EC2 AMI Tools.)
Разочаровывает то, что у меня ДЕЙСТВИТЕЛЬНО все работало, а затем, когда я все собрал и переместил на другую машину, ОБЕ машины перестали работать. : Foreach на нескольких потоках У меня есть 3 основных потока обработки, каждый из которых выполняет операции со значениями ConcurrentDictionaries с помощью Parallel.Foreach. Словари различаются по размеру от 1000 элементов до 250 000 ...
У меня есть 3 основных потока обработки, каждый из которых выполняет операции со значениями ConcurrentDictionaries с помощью Parallel.Foreach. Словари различаются по размеру от 1000 до 250 000 элементов
TaskFactory factory = new TaskFactory();
Task t1 = factory.StartNew(() =>
{
Parallel.ForEach(dict1.Values, item => ProcessItem(item));
});
Task t2 = factory.StartNew(() =>
{
Parallel.ForEach(dict2.Values, item => ProcessItem(item));
});
Task t3 = factory.StartNew(() =>
{
Parallel.ForEach(dict3.Values, item => ProcessItem(item));
});
t1.Wait();
t2.Wait();
t3.Wait();
Я сравнил производительность (общее время выполнения) этой конструкции с простым запуском Parallel.Foreach в основном потоке, и производительность значительно улучшилась (время выполнения было уменьшено приблизительно 5 раз)
Мои вопросы:
У меня есть 3 основных потока обработки, каждый из которых выполняет операции со значениями ConcurrentDictionaries с помощью Parallel.Foreach. Словари различаются по размеру от 1000 до 250 000 элементов
TaskFactory factory = new TaskFactory();
Task t1 = factory.StartNew(() =>
{
Parallel.ForEach(dict1.Values, item => ProcessItem(item));
});
Task t2 = factory.StartNew(() =>
{
Parallel.ForEach(dict2.Values, item => ProcessItem(item));
});
Task t3 = factory.StartNew(() =>
{
Parallel.ForEach(dict3.Values, item => ProcessItem(item));
});
t1.Wait();
t2.Wait();
t3.Wait();
Я сравнил производительность (общее время выполнения) этой конструкции с простым запуском Parallel.Foreach в основном потоке, и производительность значительно улучшилась (время выполнения было уменьшено приблизительно 5 раз)
Мои вопросы:
У меня есть 3 основных потока обработки, каждый из которых выполняет операции со значениями ConcurrentDictionaries с помощью Parallel.Foreach. Словари различаются по размеру от 1000 до 250 000 элементов
TaskFactory factory = new TaskFactory();
Task t1 = factory.StartNew(() =>
{
Parallel.ForEach(dict1.Values, item => ProcessItem(item));
});
Task t2 = factory.StartNew(() =>
{
Parallel.ForEach(dict2.Values, item => ProcessItem(item));
});
Task t3 = factory.StartNew(() =>
{
Parallel.ForEach(dict3.Values, item => ProcessItem(item));
});
t1.Wait();
t2.Wait();
t3.Wait();
Я сравнил производительность (общее время выполнения) этой конструкции с простым запуском Parallel.Foreach в основном потоке, и производительность значительно улучшилась (время выполнения было уменьшено приблизительно 5 раз)
Мои вопросы:
У меня есть 3 основных потока обработки, каждый из которых выполняет операции со значениями ConcurrentDictionaries с помощью Parallel.Foreach. Словари различаются по размеру от 1000 до 250 000 элементов
TaskFactory factory = new TaskFactory();
Task t1 = factory.StartNew(() =>
{
Parallel.ForEach(dict1.Values, item => ProcessItem(item));
});
Task t2 = factory.StartNew(() =>
{
Parallel.ForEach(dict2.Values, item => ProcessItem(item));
});
Task t3 = factory.StartNew(() =>
{
Parallel.ForEach(dict3.Values, item => ProcessItem(item));
});
t1.Wait();
t2.Wait();
t3.Wait();
Я сравнил производительность (общее время выполнения) этой конструкции с простым запуском Parallel.Foreach в основном потоке, и производительность значительно улучшилась (время выполнения было уменьшено приблизительно 5 раз)
Мои вопросы:
ИЗМЕНИТЬ : Для дальнейшего прояснения ситуации: Я издевательство над клиентскими вызовами службы WCF, каждый из которых работает в отдельном потоке (причина для задач). Я также пытался использовать ThreadPool.QueueUserWorkItem вместо Task, без повышения производительности. Объекты в словаре имеют от 20 до 200 свойств (только десятичные числа и строки), и здесь нет операций ввода-вывода
Я решил проблему, поставив в очередь запросы обработки в BlockingCollection и обработав их по одному за раз