Click here to Skip to main content
15,898,134 members
Home / Discussions / C#
   

C#

 
GeneralRe: LINQ to SQL Question Pin
Sam Xavier18-Jan-08 0:02
Sam Xavier18-Jan-08 0:02 
QuestionBase 2 Log Method Pin
Skippums29-Nov-07 5:26
Skippums29-Nov-07 5:26 
AnswerRe: Base 2 Log Method Pin
led mike29-Nov-07 5:35
led mike29-Nov-07 5:35 
GeneralRe: Base 2 Log Method Pin
Skippums29-Nov-07 6:13
Skippums29-Nov-07 6:13 
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 7:46
sitebuilderLuc Pattyn29-Nov-07 7:46 
GeneralRe: Base 2 Log Method Pin
Skippums29-Nov-07 8:12
Skippums29-Nov-07 8:12 
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 8:39
sitebuilderLuc Pattyn29-Nov-07 8:39 
GeneralRe: Base 2 Log Method Pin
Skippums29-Nov-07 8:59
Skippums29-Nov-07 8:59 
1: Release build.
2: Beforehand

Here is the code...

private Stopwatch sw = new Stopwatch();
private List<uint> m_Nums = new List<uint>(0x1000000);
private List<uint> result1 = new List<uint>(0x1000000);
private List<uint> result2 = new List<uint>(0x1000000);
private List<uint> result3 = new List<uint>(0x1000000);
private List<uint> result4 = new List<uint>(0x1000000);
...
private void button1_Click(object sender, EventArgs e) {
    m_Nums.Clear();
    result1.Clear();
    result2.Clear();
    result3.Clear();
    result4.Clear();
    Random rnd = new Random();
    for (int i = 0; i < m_Nums.Capacity; ++i)
        m_Nums.Add((uint)rnd.Next());
// Start "Block1"
    sw.Start();
    foreach (uint num in m_Nums)
        result1.Add(Log2_1(num));
    sw.Stop();
    label1.Text = sw.ElapsedMilliseconds.ToString();
    sw.Reset();
// End "Block1"
// Repeat "Block1" for methods Log2_2, Log2_3, and Log2_4
}

I even tested it in different orders (ie, calling <3,4,1,2>, etc.), to see if the order those methods were being called effects the time taken by them. They were all reasonably constant regardless of the ordering. Oh yeah, and I attempted to make your Conditional method more extensible in a for loop, but it ended up taking the same time (+-10 ms) as my binary search code. I copied it below...
if (val < 1)
    return byte.MaxValue;
int shift = sizeof(uint) << 2;
uint mask = uint.MaxValue >> shift;
int rval = 0;
do {
    if (val > mask) {
        rval += shift;
        val >>= shift;
    }
    shift >>= 1;
    mask >>= shift;
} while (shift > 0);
return (byte)rval;


Jeff
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 9:18
sitebuilderLuc Pattyn29-Nov-07 9:18 
GeneralRe: Base 2 Log Method Pin
Skippums29-Nov-07 9:37
Skippums29-Nov-07 9:37 
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 9:56
sitebuilderLuc Pattyn29-Nov-07 9:56 
GeneralRe: Base 2 Log Method Pin
PIEBALDconsult29-Nov-07 10:19
mvePIEBALDconsult29-Nov-07 10:19 
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 10:36
sitebuilderLuc Pattyn29-Nov-07 10:36 
JokeRe: Base 2 Log Method Pin
PIEBALDconsult29-Nov-07 13:06
mvePIEBALDconsult29-Nov-07 13:06 
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 13:23
sitebuilderLuc Pattyn29-Nov-07 13:23 
GeneralRe: Base 2 Log Method Pin
PIEBALDconsult29-Nov-07 13:43
mvePIEBALDconsult29-Nov-07 13:43 
GeneralRe: Base 2 Log Method Pin
Luc Pattyn29-Nov-07 14:02
sitebuilderLuc Pattyn29-Nov-07 14:02 
GeneralRe: Base 2 Log Method Pin
PIEBALDconsult29-Nov-07 10:26
mvePIEBALDconsult29-Nov-07 10:26 
GeneralRe: Base 2 Log Method Pin
Skippums29-Nov-07 10:45
Skippums29-Nov-07 10:45 
GeneralRe: Base 2 Log Method Pin
PIEBALDconsult29-Nov-07 13:03
mvePIEBALDconsult29-Nov-07 13:03 
GeneralRe: Base 2 Log Method Pin
Skippums29-Nov-07 13:21
Skippums29-Nov-07 13:21 
GeneralRe: Base 2 Log Method [modified] Pin
PIEBALDconsult29-Nov-07 14:15
mvePIEBALDconsult29-Nov-07 14:15 
GeneralRe: Base 2 Log Method Pin
Skippums30-Nov-07 5:19
Skippums30-Nov-07 5:19 
GeneralRe: Base 2 Log Method Pin
PIEBALDconsult30-Nov-07 10:25
mvePIEBALDconsult30-Nov-07 10:25 
GeneralRe: Base 2 Log Method Pin
PIEBALDconsult3-Dec-07 11:07
mvePIEBALDconsult3-Dec-07 11:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.