Example #1
0
void Performance_cmp()
{
    time_call("kapok all", []
    {
        Serializer sr;
        DeSerializer dr;
        Person tp = { 18, "bb", "aa" };
        Person p;
        for (size_t i = 0; i < 200000; i++)
        {
            sr.Serialize(tp, "tuple");
            dr.Parse(sr.GetString());
            dr.Deserialize(p, "tuple");
        }
    });
    time_call("kapok all2", []
    {
        for (size_t i = 0; i < 200000; i++)
        {
            Person tp = { 18, "bb", "aa" };
            Serializer sr;
            DeSerializer dr;
            sr.Serialize(tp, "tuple");
            dr.Parse(sr.GetString());
            Person p;
            dr.Deserialize(p, "tuple");
        }
    });
    time_call("msgpack all", []
    {
        Person src = { 18, "bb", "aa" };
        Person dst;
        msgpack::unpacked result;
        for (size_t i = 0; i < 200000; i++)
        {
            msgpack::sbuffer buffer;
            msgpack::pack(buffer, src);
            msgpack::unpack(result, buffer.data(), buffer.size());
            result.get().convert(&dst);
        }
    });
    time_call("msgpack all2", []
    {
        for (size_t i = 0; i < 200000; i++)
        {
            Person src = { 18, "bb", "aa" };
            std::stringstream buffer;
            msgpack::pack(buffer, src);
            buffer.seekg(0);
            std::string str(buffer.str());
            msgpack::unpacked result;
            msgpack::unpack(result, str.data(), str.size());
            msgpack::object deserialized = result.get();
            Person dst;
            deserialized.convert(&dst);
        }
    });
}
Example #2
0
void Performance_msgpack()
{
    Person src = { 18, "bb", "aa" };
    Person dst;

    time_call("msgpack all", [&]
    {
        for (size_t i = 0; i < 100000; i++)
        {
            std::stringstream buffer;
            msgpack::pack(buffer, src);
            buffer.seekg(0);
            std::string str(buffer.str());
            msgpack::unpacked result;
            msgpack::unpack(result, str.data(), str.size());
            msgpack::object deserialized = result.get();
            deserialized.convert(&dst);
        }
    });
}
Example #3
0
void Performance_kapok()
{
    time_call("kapok all", []
    {
        Serializer sr;
        DeSerializer dr;
        Person tp = { 18, "bb", "aa" };
        for (size_t i = 0; i < 100000; i++)
        {
            sr.Serialize(tp, "tuple");
            dr.Parse(sr.GetString());
            Person p;
            dr.Deserialize(p, "tuple");
        }
    });
    time_call("kapok all2", []
    {
        Person tp = { 18, "bb", "aa" };
        for (size_t i = 0; i < 100000; i++)
        {
            Serializer sr;
            DeSerializer dr;
            sr.Serialize(tp, "tuple");
            dr.Parse(sr.GetString());
            Person p;
            dr.Deserialize(p, "tuple");
        }
    });

    time_call("kapok Serializer", []
    {
        Serializer sr;
        Person tp = { 18, "bb", "aa" };
        for (size_t i = 0; i < 100000; i++)
        {
            sr.Serialize(tp, "tuple");
        }
    });
    time_call("kapok Serializer2", []
    {
        Person tp = { 18, "bb", "aa" };
        for (size_t i = 0; i < 100000; i++)
        {
            Serializer sr;
            sr.Serialize(tp, "tuple");
        }
    });

    Serializer sr;
    Person tp = { 18, "bb", "aa" };
    sr.Serialize(tp, "tuple");
    time_call("kapok DeSerializer", [&]
    {
        DeSerializer dr;
        for (size_t i = 0; i < 100000; i++)
        {
            dr.Parse(sr.GetString());
            Person p;
            dr.Deserialize(p, "tuple");
        }
    });
    time_call("kapok DeSerializer", [&]
    {
        for (size_t i = 0; i < 100000; i++)
        {
            DeSerializer dr;
            dr.Parse(sr.GetString());
            Person p;
            dr.Deserialize(p, "tuple");
        }
    });
}
int _tmain(int argc, _TCHAR* argv[])
{
    CoInitializeEx(nullptr, COINIT_MULTITHREADED);

    // Make a big bitmap.
    std::vector<BYTE> pixels(300000000);

    // Initialize it with the pattern 0,1,2,0,1,2...
    ColorGen colorGen;
    std::generate(pixels.begin(), pixels.end(), colorGen);

    // Total times for each implementation.
    long long elapsed_While = 0;
    long long elapsed_Serial = 0;
    long long elapsed_Task = 0;
    long long elapsed_ParallelInvoke = 0;
    long long elapsed_ParallelReduce = 0;
    long long elapsed_ParallelInvokeReduce = 0;
    long long elapsed_StdThread = 0;
    long long elapsed_StdThreadRecursive = 0;
    long long elapsed_StdAsync = 0;
    long long elapsed_ParallelAccumulate = 0;

    const size_t iterations = 10;

    for (size_t i = 0; i < iterations; ++i)
    {
        DWORD averageColor;
        long long elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_While(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_While(): " << elapsed << L" ms" << std::endl;
        elapsed_While += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_Serial(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_Serial(): " << elapsed << L" ms" << std::endl;
        elapsed_Serial += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_Task(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_Task(): " << elapsed << L" ms" << std::endl;
        elapsed_Task += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_ParallelInvoke(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_ParallelInvoke(): " << elapsed << L" ms" << std::endl;
        elapsed_ParallelInvoke += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_ParallelReduce(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_ParallelReduce(): " << elapsed << L" ms" << std::endl;
        elapsed_ParallelReduce += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_ParallelInvokeReduce(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_ParallelInvokeReduce(): " << elapsed << L" ms" << std::endl;
        elapsed_ParallelInvokeReduce += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_StdThread(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_StdThread(): " << elapsed << L" ms" << std::endl;
        elapsed_StdThread += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_StdThreadRecursive(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_StdThreadRecursive(): " << elapsed << L" ms" << std::endl;
        elapsed_StdThreadRecursive += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_StdAsync(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_StdAsync(): " << elapsed << L" ms" << std::endl;
        elapsed_StdAsync += elapsed;

        elapsed = time_call(
            [&]
        {
            averageColor = AverageColor_ParallelAccumulate(pixels.cbegin(), pixels.cend());
        });

        std::wcout << averageColor << L" Elapsed time AverageColor_ParallelAccumulate(): " << elapsed << L" ms" << std::endl;
        elapsed_ParallelAccumulate += elapsed;


    }

    std::wcout << L"Average AverageColor_While(): " << elapsed_While / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_Serial(): " << elapsed_Serial / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_Task(): " << elapsed_Task / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_ParallelInvoke(): " << elapsed_ParallelInvoke / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_ParallelReduce(): " << elapsed_ParallelReduce / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_ParallelInvokeReduce(): " << elapsed_ParallelInvokeReduce / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_StdThread(): " << elapsed_StdThread / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_StdThreadRecursive(): " << elapsed_StdThreadRecursive / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_StdAsync(): " << elapsed_StdAsync / iterations << L" ms" << std::endl;
    std::wcout << L"Average AverageColor_ParallelAccumulate(): " << elapsed_ParallelAccumulate / iterations << L" ms" << std::endl;

    CoUninitialize();
    return 0;
}