Накладные расходы на Моно-тасклет / Совместные процедуры

StackOverflow https://stackoverflow.com/questions/1290051

Вопрос

Каковы основные издержки производительности (копирование 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top