theo dõi

Gần nhất :

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : C#
Hỏi lúc:
Lượt xem: 1,757

Try-catch sẽ giúp tăng tốc mã code?

Bùi Hiền Nương Bùi Hiền Nương
 07  01  00
07 bình chọn hữu ích bởi Trịnh Lạc Phúc, Trần Bích Trà Hoàng Quốc Hiền ... (tất cả)

Tôi đã viết một số mã để thử nghiệm tác động của try-catch, nhưng nhìn thấy một số kết quả đáng ngạc nhiên.

static void Main(string[] args)
{
    Thread.CurrentThread.Priority = ThreadPriority.Highest;
    Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;

    long start = 0, stop = 0, elapsed = 0;
    double avg = 0.0;

    long temp = Fibo(1);

    for (int i = 1; i < 100000000; i++)
    {
        start = Stopwatch.GetTimestamp();
        temp = Fibo(100);
        stop = Stopwatch.GetTimestamp();

        elapsed = stop - start;
        avg = avg + ((double)elapsed - avg) / i;
    }

    Console.WriteLine("Elapsed: " + avg);
    Console.ReadKey();
}

static long Fibo(int n)
{
    long n1 = 0, n2 = 1, fibo = 0;
    n++;

    for (int i = 1; i < n; i++)
    {
        n1 = n2;
        n2 = fibo;
        fibo = n1 + n2;
    }

    return fibo;
}

Trên máy tính của tôi, điều này luôn in ra một giá trị khoảng 0,96 ..

Khi tôi quấn cho vòng lặp bên Fibo() với một khối try-catch như thế này:

static long Fibo(int n)
{
    long n1 = 0, n2 = 1, fibo = 0;
    n++;

    try
    {
        for (int i = 1; i < n; i++)
        {
            n1 = n2;
            n2 = fibo;
            fibo = n1 + n2;
        }
    }
    catch {}

    return fibo;
}

Bây giờ nó luôn in ra 0,69 ... - nó thực sự chạy nhanh hơn! Nhưng tại sao lại như vậy?

Lưu ý: Tôi biên dịch này bằng cách sử dụng cấu hình phát hành và trực tiếp chạy file EXE (bên ngoài Visual Studio).

1,757 xem 05 theo dõi 07 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user