[dba-VB] Merge rows

Shamil Salakhetdinov shamil at smsconsulting.spb.ru
Wed Sep 23 01:54:42 CDT 2009


Hi Stuart,

No problem. "BitArrays population magic" isn't a complicated task for John
"DB from Hell".

BTW, I have just run test code for 50 millions 400 bits bit arrays for OR,
AND and XOR bitwise operations - it takes less than 3 seconds, and for "DB
from Hell" with 50 million records it will be 50 millions * 400 = 20 billion
bits = ~2GB - all that can be loaded into memory for 64bits PCs, so, I do
expect that even "brute force crunching" will produce a kind of
instantaneous results for the part of query where char "Y/N" columns are
currently used. And once loaded in memory the info can be kept/updated there
(and in DB)(and back-up in 2GB+ binary file) as it's not changing that much
IOW maybe there is no even a need to substitute in "DB from Hell" current
char "Y/N" fields with Binary(...) or VarBinary(...) fields... etc... 

Please correct me if you find I'm wrong somewhere in my
considerations/expectations/evaluations...

Thank you.

--
Shamil

P.S.

static void test3()
{
    //const long CYCLES_QTY = 1000000000; // 1 billion
    const long CYCLES_QTY = 50000000; // 50 millions
    bool[] values1 = (bool[])Array.CreateInstance(typeof(bool), 400);
    bool[] values2 = (bool[])Array.CreateInstance(typeof(bool), 400);
    values1[0] = true;
    values1[225] = true;
    values1[399] = true;


    System.Collections.BitArray bitTest1 =
        new System.Collections.BitArray(values1);
    System.Collections.BitArray bitTest2 =
        new System.Collections.BitArray(values2);

    for (int i = 0; i < 400; i++) bitTest2[i] = true; 

    Console.WriteLine("{0:HH:mm:ss.fff}", DateTime.Now);
    for (long l = 1; l < CYCLES_QTY; l++)
        bitTest1.Xor(bitTest2);
        //bitTest1.Or(bitTest2);
        //bitTest1.And(bitTest2);
    Console.WriteLine("{0:HH:mm:ss.fff}", DateTime.Now);

    foreach (bool bit in bitTest1)
        Console.Write("{0}", bit ? "1" : "0");

    Console.WriteLine();

    // 50 millions - AND
    //10:32:56.772
    //10:32:59.548
 
//10000000000000000000000000000000000000000000000000000000000000000000000000
000000
 
//00000000000000000000000000000000000000000000000000000000000000000000000000
000000
 
//00000000000000000000000000000000000000000000000000000000000000000100000000
000000
 
//00000000000000000000000000000000000000000000000000000000000000000000000000
000000
 
//00000000000000000000000000000000000000000000000000000000000000000000000000
000001

    // 50 millions - OR
    //10:34:27.644
    //10:34:30.451
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111

    // 50 millions - XOR
    //10:35:27.414
    //10:35:30.182
 
//01111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111011111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111111
 
//11111111111111111111111111111111111111111111111111111111111111111111111111
111110
    
    Console.WriteLine();
    foreach (bool bit in bitTest2)
        Console.Write("{0}", bit ? "1" : "0");

    Console.WriteLine();
}



-----Original Message-----
From: dba-vb-bounces at databaseadvisors.com
[mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of Stuart McLachlan
Sent: Wednesday, September 23, 2009 10:19 AM
To: Discussion concerning Visual Basic and related programming issues.
Subject: Re: [dba-VB] Merge rows

Sorry, 

I was under the impression that we were talking about selecting rows from
JC's "Database 
>From Hell", not just manipulating bit arrays which we have somehow
magically populated 
without pulling data from SQL Server.


-- 
Stuart  



 

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4448 (20090922) __________

The message was checked by ESET NOD32 Antivirus.

http://www.esetnod32.ru
 




More information about the dba-VB mailing list