30/09/2018, 18:45

thắc mắc về tốc độ giữa Java và C#

Mình đã làm một bài test nhỏ để kiểm tra thử tốc độ của hai ngôn ngữ trên ở mức cơ bản (chỉ sử dụng vòng lặp với lệnh xuất đơn giản).
Thông số bài test :
Test tốc độ chạy vòng lặp với các mức 100, 1000, 10000, 100000, 1000000 lần với mỗi mức là 5 lần thử nghiệm.
Sử dụng IDE Visual Studio Community RC1
Java extension : Java Language Support (phiên bản Java 1.8.0_45)
C# : .NET framework 4.6
Code dùng để test
Java :
package pkg;

public class Program {
public static void main(String[] args)
{
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100; i++)
System.out.println(i);
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime);
}
}

C# :
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < 100; i++)
Console.WriteLine(i);
stopWatch.Stop();
Console.WriteLine(stopWatch.ElapsedMilliseconds.ToString());
Console.ReadKey();
}
}
}

Mọi người có thể giải thích giùm mình vì sao Java lại có vẻ nhanh hơn C# không (trong 4 mức đầu, mức cuối thì không hiểu sao C# nó nhanh hơn một chút).

Văn Dương viết 20:55 ngày 30/09/2018

Phần code :
Bạn đang sử dụng 2 phương pháp Console.WriteLine và System.Out.PrintIn nên có thể không chuẩn. Ngoài ra còn một số vấn đề mình nói phía dưới.


Mình nghĩ bạn nên test giải thuật thế này :
Chỉ có vòng for thôi và làm những công việc như nhau, những cái tương đồng ở cả 2 cái ngôn ngữ.
Ví dụ :

int count;
=>> // Reset thời gian
for(int i=0;i<1000000;i++)
     count++;
==>> // Stop thời gian
==>> // Hiển thị thời gian.

Phần build :
Cả 2 ngôn ngữ đều build ở chế độ Release và Optimize tốt nhất.


Phần Test :
Chạy cả 2 ứng dụng bằng phương pháp thông thường, tức là vào thư mục build chạy trực tiếp ứng dụng không qua IDE.


Bạn nên đưa thêm cấu hình Test. Mình không dùng Java nhưng test đoạn code C# cho kết quả rất lệch với của bạn.
Mình cũng dùng VS2015, .NET = 4.6.
Cấu hình : Core i3 4160 3.6GHz, RAM 4G 1600, Windows 7.

Kết quả như sau với lần lặp 1000000:
Chế độ debug chạy qua IDE : 38000ms.
Chế độ release chạy trực tiếp : 31000ms.

Hứa Anh Minh viết 20:58 ngày 30/09/2018

Để mình thử test lại xem.

Bài liên quan
0