Накладные расходы на Моно-тасклет / Совместные процедуры
-
18-09-2019 - |
Вопрос
Каковы основные издержки производительности (копирование gc / стека ...) новой платформы Mono Continuations / Tasklet?
Как эти накладные расходы (производительность сопрограммы / raw performance) сравниваются с другими фреймворками, такими как Lua Coroutine и stackless python?
В Mono 2.6 будет добавлена поддержка продолжения / сопрограмм.Я создал версию svn и использовал следующий код для оценки ее накладных расходов
static void Main()
{
Console.WriteLine("starting.,..");
for(int i = 0; i < 10000; i++)
{
MicroThread t1 = new MicroThread(Run1);
t1.Start();
}
Scheduler.Run();
Console.WriteLine("starting raw loop.,..");
int x = 2;
for (int i = 0; i < 10000 * 400; i++ )
{
x++;
}
Console.WriteLine("1finished.,.. " + x.ToString());
Console.ReadLine();
}
static void Run1()
{
for (int y = 0; y < 400; y++)
{
MicroThread.CurrentThread.Yield();
}
}
Запуск microthread / scheduler занял около 1,5-2 секунд, в то время как необработанный цикл выполняется почти мгновенно.Хотя ожидаются накладные расходы, это кажется немного перебором.
Каковы основные накладные расходы на производительность нового фреймворка Mono Continuations / Tasklet?Как эти накладные расходы (производительность сопрограммы / raw performance) сравниваются с другими фреймворками, такими как Lua Coroutine и stackless python?
Спасибо
Решение
Если я не ошибся в подсчетах, ваш код выдает более 2 миллионов результатов в секунду, что должно быть примерно на том же уровне, что и stackless python.
Учитывая, что mono обычно выполняет реальный код приложения в 10-100 раз быстрее, чем python, производительность, вероятно, будет очень хорошей, если только весь ваш код не выдает результат без выполнения какой-либо реальной работы, что я не думаю, что это очень полезно :)
Другие советы
Учитывая, что очень мало людей, обладающих опытом, чтобы ответить на этот вопрос, возможно, вам придется обратиться к ним и задать вопрос в списке mono-devel.
Вы также можете просмотреть архивы, чтобы увидеть дискуссию вокруг monoco / tasklet, когда она была представлена:
http://lists.ximian.com/pipermail/mono-devel-list/2009-April/031680.html