Скорость работы 3 потоков

 
0
 
Delphi, Kylix and Pascal
ava
Garmahis | 11.10.2016, 17:10
В приложенном проекте есть thread, который свою работу выполняет за 2 секунды,
если он запущен один (Delphi 7, i5 3,3 GHz 8Gb).

Если запустить их 3, то время работы каждого увеличится до 12 секунд.

Если запустить 3 копии приложения в каждом из которых будет работать 1 поток,
то время работы потока останется в районе 2с.

Требуется заставить 3 потока в одном приложении работать со скоростью 2с.
Уже потерял всякую надежду и планирую использовать несколько процессов.
Время работы потоков пишется в файлы c:\thread_*.txt

Кто сможет заставить 3 потока работать со скоростью одного ? 
Ответы (5)
ava
kami | 11.10.2016, 22:01 #
Цитата (Garmahis @  11.10.2016,  17:10 findReferencedText)
Кто сможет заставить 3 потока работать со скоростью одного ?  

Минус вам. Виртуальный. За:
1. Спихивание на других своей задачи. Допустим, много кто на форуме сможет. Но кому это надо?
2. Плохо разобранная проблема. А вернее - вообще не разобранная. Код не документирован, с использованием указателей (зачем? Вы работаете в D3 - D7?), кучей непонятных вычислений (думаете, кому-то будет интересно разбирать это всё?), объявления массивов на 380 метров (вы не слышали о динамических массивах? и о дженериках?) при использовании только 100 кб... В общем, даже начало чтения кода уже снижает желание помочь до минимума.

P.S. Резко? Возможно. Но какая постановка вопроса - такой и ответ. Спасибо, хоть не "ну-ка быстро всё бросили и сделали так, чтобы код работал так быстро, как мне надо".
ava
DYUMON | 12.10.2016, 06:48 #
ошибка в 16 строке
ava
dnek | 12.10.2016, 13:08 #
Попробуйте повысить приоритет Вашего процесса:

  SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);

или повысить приоритет потока

[Поток].Priority := tpTimeCritical
ava
Garmahis | 13.10.2016, 10:21 #
dnek, большое спасибо! Я разобрался :) Была проблема с менеджером памяти при выполнении StrPCopy.
kami, вас никто не заставляет никому помогать. Поэтому не стоит писать если у вас нечего сказать по делу.
ava
kami | 14.10.2016, 18:47 #
Цитата (Garmahis @  13.10.2016,  10:21 findReferencedText)
не стоит писать если у вас нечего сказать по делу. 

Я говорил именно по делу.
Прежде чем написать - я скачал ваши исходники и попробовал разобраться. Несмотря на явно приказной (вернее "на слабо") тон в постановке вопроса. Обратите внимание, что счетчик скачиваний = 1, т.е. я единственный, кто вообще прикоснулся к вашим исходникам.
Только после поверхностного анализа структуры приложения я понял, что глубже лезть и искать причину нет смысла. О чем и написал.

На всякий случай - переформулирую: если вы хотите помощи - обращайтесь именно за помощью. Показывая при этом, что вы сами сделали для решения проблемы. Дабы помогающие видели - вы не халявщик, просто в данном аспекте не хватает знаний. Прикладывая не тонну своего кода а-ля "разгребите тут всё", а минимальный воспроизводимый пример.

В исходной постановке ваш вопрос расценивается именно как сообщение от халявщика, который уверен, что все вокруг ему должны.

Кстати, предложение dnek, мягко говоря, не особенно то и хорошее. 
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  Garmahis   kami   dnek ava  DYUMON
advanced
Отправить