Új hozzászólás Aktív témák

  • pmonitor

    aktív tag

    válasz #79484416 #19838 üzenetére

    a számítógép az utasításaid és nem a kívánságaid szerint működik.

    Nézzük, hogy működik a számítógép. Van a következő C# kód:
    using System;
    using System.Diagnostics;

    namespace ConsoleApp1
    {
    internal class Program
    {
    static void Main(string[] args)
    {
    long i = 0, j = 0, m = 0;
    Stopwatch sw = Stopwatch.StartNew();
    for (m = 0; m < 3000000000; ++m)
    {
    i = m;
    j = i;
    }
    long n = sw.ElapsedMilliseconds;
    object k;
    for (m = 0; m < 3000000000; ++m)
    {
    k = m;
    j = (long)k;
    }
    long p = sw.ElapsedMilliseconds;
    Console.WriteLine("{0} {1} {2} {3}", j, m, n, p - n);
    Console.ReadKey();
    }
    }
    }

    A második ciklus 2-3 szoros idő alatt fut le, mint az első.
    Ez eddig tény.

    -----------------------------------------------------------------------------------------------------------

    Szerintem ez csak úgy lehetséges, hogy az első ciklusban nincs sem object, sem ValueType, sem boxing, sem unboxing, sem semmi. Ott csak egy szimpla struct van. Csupaszon.

    A második ciklusban valóban létrejön az object, a ValueType, van boxing és unboxing. De "k" nem long, hanem Object, ami egy becsomagolt long-ot tartalmaz.

    Ez az én véleményem. Ami ugyan nem tény, de meg lehet cáfolni értelmes magyarázattal. Ezeket szívesen fogadom.

    -----------------------------------------------------------------------------------------

    sztanozs #19840: ha lesz energiám és időm, akkor még foglalkozom vele. De ránézésre úgy van, ahogy írod. Köszi előre is.

Új hozzászólás Aktív témák

Hirdetés