⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testpar.cpp

📁 最新版本!fastdb是高效的内存数据库系统
💻 CPP
字号:
//-< TESTPAR.CPP >---------------------------------------------------*--------*
// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *
// (Main Memory Database Management System)                          *   /\|  *
//                                                                   *  /  \  *
//                          Created:     10-Dec-98    K.A. Knizhnik  * / [] \ *
//                          Last update: 20-Jan-99    K.A. Knizhnik  * GARRET *
//-------------------------------------------------------------------*--------*
// Test parallel sequential search
//-------------------------------------------------------------------*--------*

#include "fastdb.h"
#include <stdio.h>

USE_FASTDB_NAMESPACE

const int nRecords = 10000;

struct Record {
    int4 id;

    TYPE_DESCRIPTOR((FIELD(id)));
};

REGISTER(Record);


int main(int argc, char* argv[])
{
    int i, j;
    dbDatabase db(dbDatabase::dbAllAccess, 16*1024); // 96Mb page pool

    if (db.open("testpar")) {
        // db.setConcurrency(4);
        for (i = 0; i < nRecords; i++) { 
            Record rec;
            rec.id = i;
            insert(rec);
        }
        db.commit();
        
        dbQuery q;
        dbCursor<Record> cursor;
        int min;
        int max;
        q = "id between",min,"and",max;
        time_t start = time(NULL);

        for (i = 0, j = 0; i+j < nRecords; i += j) { 
            min = i;
            max = i + j;
            j += 1;
            int n = cursor.select(q);
            assert(n == j);
            int k = 0;
            int sum = 0;
            do { 
                sum += cursor->id;
                k += 1;
            } while (cursor.next());
            assert(k == j);
            assert(sum == k*(k-1)/2 + k*i);
        }
        printf("Elapsed time for %d sequential searchs in %d records: %d seconds\n",
               j, nRecords, int(time(NULL) - start)); 

        q = "id between",min,"and",max,"order by id";
        start = time(NULL);
        for (i = 0, j = 0; i+j < nRecords; i += j) { 
            min = i;
            max = i + j;
            j += 1;
            int n = cursor.select(q);
            assert(n == j);
            int k = i;
            do { 
                assert(cursor->id == k);
                k += 1;
            } while (cursor.next());
            assert(k == i+j);
        }
        printf("Elapsed time for %d sequential searchs with sorting in %d records: %d seconds\n",
               j, nRecords, int(time(NULL) - start));
        db.close();
    } 
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -