読者です 読者をやめる 読者になる 読者になる

Training for D-Day

ブログの内容は個人の見解であり、所属する企業を代表するものではありません。

MFCのSerialize,Desirialize part.2 CStringArrayにて

CMapの要素にCStringArrayが良かったのですが、なかなか出来なかったので、
とりあえずCStringArrayのみでやってみました。

CStringArrayのnew/deleteはちゃんと出来ていなのでご注意ください。

void Initialize()
{
    clock_t start, finish;
    double duration;
    start = clock();

    m_stringarray = new CStringArray[500000];

    for (int i = 0; i < 500000; i++)
    {
        CString str;
        str.Format(_T("item:%d %d\r\n"), i, 0);
        m_stringarray->Add(str);
    }
    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    TRACE(_T("map initialized --- %2.3f seconds\n"), duration);
}

void Serialize()
{
    clock_t start, finish;
    double duration;
    start = clock();

    CFile cFileG;
    if (cFileG.Open(_T("SampleFile.txt"), CFile::modeCreate | CFile::modeWrite))
    {
        CArchive cArchiveObj(&cFileG, CArchive::store);
        m_stringarray->Serialize(cArchiveObj);
    }

    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    TRACE(_T("map serialized --- %2.3f seconds\n"), duration);
}

void Deserialize()
{
    clock_t start, finish;
    double duration;
    start = clock();

    CFile cFileG;

    m_stringarray = new CStringArray[500000];
    if (cFileG.Open(_T("SampleFile.txt"), CFile::modeRead ))
    {
        CArchive cArchiveObj(&cFileG, CArchive::load);
        m_stringarray->Serialize(cArchiveObj);
    }

    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    TRACE(_T("map loaded --- %2.3f seconds\n"), duration);

    for (int i = 0; i < m_stringarray->GetSize(); i++)
    {
        auto arr = m_stringarray->GetAt(i);


        TRACE(_T("map element string array --- %s \n"), arr);
    }
 
}