Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 3 trên tổng số 11 Đầu tiênĐầu tiên 12345... Cuối cùngCuối cùng
Từ 21 tới 30 trên tổng số 106 kết quả

Đề tài: So sánh C# với C++ và Java. Giống và khác như thế nào?

  1. #21
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Mặc định So sánh C# với C++ và Java. Giống và khác như thế nào?

    Trích dẫn Nguyên bản được gửi bởi prog10 Xem bài viết
    2. Tùy workload của chương trình.
    3. Java chạy trên VM, Java có GC tự động, Java kiểm tra mảng tự động... đều tốn time.

    Nói chung thì OOP thì nó gần với vấn đề cần giải quyết hơn (cái này chính là high-level nhưng từ này dễ hiểu nhầm).
    Ý mình là một con số tương đối cho cùng 1 phương pháp để giải quyết cùng 1 công việc ấy.
    Ví dụ cùng thực hiện 1 việc :
    Code:
    for(int i=0;i<200000000;i++)
    {
         arr[i]*=5;
    }
    Thì C# sẽ chậm hơn C++ bao nhiêu lần.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #22
    Ngày gia nhập
    10 2014
    Bài viết
    373

    Đã được chỉnh sửa lần cuối bởi villbe : 24-04-2016 lúc 11:01 AM.
    Stay hungry. Stay foolish.
    Design is not just what it looks like and feels like. Design is how it works.

  3. #23
    Ngày gia nhập
    01 2013
    Bài viết
    1,479

    Trích dẫn Nguyên bản được gửi bởi Duong_act Xem bài viết
    Ý mình là một con số tương đối cho cùng 1 phương pháp để giải quyết cùng 1 công việc ấy.
    Ví dụ cùng thực hiện 1 việc :
    Code:
    for(int i=0;i<200000000;i++)
    {
         arr[i]*=5;
    }
    Thì C# sẽ chậm hơn C++ bao nhiêu lần.
    Bạn có thể benchmark code C++ được biên dịch bởi g++ (phải là g++, thư viện C++ của VS cực chậm) và code C#.
    Và đây là một bench đối với 4 workload: http://attractivechaos.github.io/plb/, khoảng 3.5 lần.
    Còn lí do chi tiết: http://sebastiansylvan.com/2015/04/13/why-most-high-level-languages-are-slow/
    Đã được chỉnh sửa lần cuối bởi prog10 : 17-09-2015 lúc 07:24 PM.

  4. #24
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Trích dẫn Nguyên bản được gửi bởi villbe Xem bài viết
    Ngôn ngữ lập trình C# không được hiểu theo nghĩa như vậy. C# đã - đang và sẽ không là nền tảng cho iOS, Android và cả Windows Phone.
    Về cơ bản, C# là ngôn ngữ trung gian dùng để chuyển đổi ngôn ngữ tự nhiên của con người sang ngôn ngữ máy.

    Ứng dụng viết trên nền iOS hoặc Android có thể được viết bằng C# hoặc C++. Nếu bạn dùng IDE của Google, bạn cần phải nhúng plugin thêm ngôn ngữ C# vào nếu muốn dùng nó.
    VS 2015 là bản tích hợp sẵn, tuy nhiên, nếu bạn đang dùng VS 2013 thì vẫn có thể nhúng nó vào. Tên của nó là Xamarin (có tính phí sau thời gian dùng thử).
    Ý mình là chương trình viết bang C# nó sẽ không chỉ chạy được trên Window. Bằng phương pháp nào đó nó sẽ chạy được trên các nền tảng khác như iOS,Androi...
    C# cũng có vậy, Microsoft nói rằng GC - Garbage Collection sẽ được gọi sau mỗi 850ms. Do vậy, bạn không phải quan tâm nhiều đến GC, nếu muốn dùng, bạn phải thực sự am hiểu về rác.
    Cái này thì mình thấy nó gọi bất kỳ không báo trước, có thể là khi RAM gần hết, hoặc mình yêu cầu bạn ạ.

    Về lý thuyết so sánh thì như vậy, thực chất phụ thuộc rất nhiều vào dev. Nếu dev quản lý bộ nhớ tồi thì việc dùng C#, C++ hay Java cũng như nhau cả thôi

    Bạn có thể benchmark code C++ được biên dịch bởi g++ (phải là g++, thư viện C++ của VS cực chậm) và code C#.
    Và đây là một bench đối với 4 workload: http://attractivechaos.github.io/plb/, khoảng 3.5 lần.
    Mình dùng thư viện C++ của Microsoft rồi đưa vào C# để test cũng ra kết quả khoảng 3.5 lần bạn ạ. Tại vì mình có đọc ở đâu đó có thánh nào nói C# chậm hơn C++ cả nghìn lần nên hơi choáng.

  5. #25
    Ngày gia nhập
    01 2013
    Bài viết
    1,479

    Trích dẫn Nguyên bản được gửi bởi Duong_act Xem bài viết
    Mình dùng thư viện C++ của Microsoft rồi đưa vào C# để test cũng ra kết quả khoảng 3.5 lần bạn ạ. Tại vì mình có đọc ở đâu đó có thánh nào nói C# chậm hơn C++ cả nghìn lần nên hơi choáng.
    Trong đó có so sánh C# với C trong regex matching
    Theo mình nhắm chừng thì chắc cỡ 10 lần.

  6. #26
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Mặc định So sánh C# với C++ và Java. Giống và khác như thế nào?

    Regex nó là mức cao hơn rồi. Nó đã được xây dựng thành method và ta chỉ biết tham số truyền vào và trả về, không biết cụ thể nó làm như thế nào trong đó. Cái này mặc dù C# chậm hơn 10 lần hoặc hơn cũng khó kết luận được gì cả ^^

  7. #27
    Ngày gia nhập
    10 2014
    Bài viết
    373

    Đã được chỉnh sửa lần cuối bởi villbe : 24-04-2016 lúc 11:02 AM.
    Stay hungry. Stay foolish.
    Design is not just what it looks like and feels like. Design is how it works.

  8. #28
    Ngày gia nhập
    01 2012
    Bài viết
    10

    1 ít thông tin về GC ( theo ý hiểu của mình ) cho các bạn có thể tham khảo và bàn luận nhé :
    1. Garbage Collection là gì ?
    - Bộ thu gom rác được tích hợp sẵn trong JMM (Java Memory Management) nhằm mục đích thu hồi và cấp phát bộ nhớ (memory allocation and deallocation)
    2. Garbage Collection làm việc thế nào ?
    - Thường thì mọi ng nghĩ là nó thu gom rác và loại bỏ các đối tượng chết nhưng thực tế nó sẽ theo dõi (tracked) vào các live objects và mọi cái khác đều là rác
    3. Làm thế nào để gọi 1 GC?
    - GC sẽ chạy tự động, kể cả khi mình yêu cầu với code System.gc() thì JVM cũng hoàn toàn có thể bỏ qua nó
    4. Chu kỳ của GC?
    - từ cầu trên, bạn ko biết lúc nào gc hoạt động hay kết thúc nên không thế biết chu kỳ của nó
    5. GC và Destructor có giống nhau không?
    - java ko có destructor ( hoặc mình ko biết ) nên câu này chịu
    6. Cách thức GC dọn rác ?
    - cái này mình hiểu theo các GC xử lý các trạng thái của object
    + created : ...
    + unreachable : ...
    + added to finalization queue : bị GC cho vào queue xử lý.
    + finalized : ...
    + reclaimed : bị GC thu gom
    7. GC thu hồi vùng nhớ như thế nào?
    - ko hiểu rõ, ko dám lạm bàn
    8. Làm thế nào để GC phân biệt 1 đối tượng không được sử dụng và 1 đối tượng không còn tham chiếu đến bất kỳ đối tượng nào nữa?
    - giống câu 2, gc ko quan tâm vấn đề này, 2 thằng là như nhau

  9. #29
    Ngày gia nhập
    10 2014
    Bài viết
    373

    Đã được chỉnh sửa lần cuối bởi villbe : 24-04-2016 lúc 11:02 AM.
    Stay hungry. Stay foolish.
    Design is not just what it looks like and feels like. Design is how it works.

  10. #30
    Ngày gia nhập
    11 2013
    Bài viết
    512

    Trích dẫn Nguyên bản được gửi bởi villbe Xem bài viết
    Chỉ mới có Regex thôi mà đã chịu không nổi, sang asp.net dùng Owin chắc hộc máu mũi mà đột tử luôn quá.

    Riêng cái GC, cụm từ mình thấy và có thể của bạn, theo đúng sách vở, tài liệu mà nói, sơ sơ cũng phải mất vài trang A4.

    Cụ thể:
    1/. Làm thế nào để gọi 1 GC?
    2/. Làm thế nào GC có thể biết được 1 đối tượng đã trở thành rác?
    3/. Chu kỳ của GC?
    4/. GC và Destructor có giống nhau không?
    5/. Cách thức GC dọn rác trên Stack và trên Heap?
    6/. GC thu hồi vùng nhớ như thế nào?
    7/. Làm thế nào để GC phân biệt 1 đối tượng không được sử dụng và 1 đối tượng không còn tham chiếu đến bất kỳ đối tượng nào nữa?
    ...........................

    Dựa vào 1 câu ngắn gọn của bạn, tôi nghĩ có thể bỏ qua chuyện bàn về GC.
    Vấn đề về GC có bạn đã nói trên rồi mình không am hiểu sâu cái đó lắm, chỉ cần hiểu rằng nó là bộ thu gom rác tự động với mục đích thu hồi lại những vùng nhớ không còn sử dụng nữa trả lại cho hệ thống. Có thể với mình thế là đủ.
    Mình theo dõi trên Taskmanager khi thấy RAM usage của máy tăng cao đột nhiên giảm mạnh, theo suy đoán đó là khi GC xảy ra nên mình nói mình thấy.
    Mình có thể gọi GC.Collect() và GC sẽ xuất hiện nên mình nói là có thể.
    Tiện đây khi bạn nói đến tạo 1 đối tượng mà chưa sử dụng, mình có thắc mắc là khi đó máy tính đã cấp phát bộ nhớ cho biến đó hay chưa. Bởi vì mình thấy khi mình tạo mảng :
    Code:
    int[] m = new int[200000000];
    Mình thấy RAM usage của máy hầu như không thay đổi, chỉ khi mình sử dụng mảng đó thì RAM usage mới tăng. Mình có gọi GC ở giữa tạo mảng và sử dụng chứng tỏ đối tượng chưa sử dụng nhưng đang có tham chiếu vẫn không bị hốt ?
    Tôi không biết các bạn đã thử bằng cách gì, hay là lấy kết quả của người khác rồi xác nhận.
    Mình thử bằng thực nghiệm. Viết 2 chương trình tương đương, một trên C++ rồi build thành dll rồi import vào C#, 1 chương trình viết bằng C# ở chế độ unsafe. Cho cả 2 chương trình chạy nhiều lần rồi dùng Stopwatch của C# để đo thời gian thực thi => kết quả.
    Nhưng nếu bạn đã khẳng định rằng có 1 cách nào đó để C/C++ có thể nhanh hơn C#, vậy bạn có thể giải thích vì sao chúng nhanh hơn không? (Ví dụ: 1 cái là cấp phát/thu hồi bộ nhớ tự động, 1 cái là tự cấp phát/tự thu hồi bộ nhớ chẳng hạn...)

    Một điều nữa, nếu tôi đem mấy thứ thần thánh của C/C++ để bàn, thì bạn sẽ so sánh nó với cái gì của C#? Cụ thể:

    1/. Con trỏ.
    2/. Con trỏ của con trỏ.
    3/. Mảng kiểu con trỏ.
    4/. Con trỏ struct.

    Unsafe code trong C# chăng?
    Cái dòng bôi màu ấy mình không hiểu ý bạn lắm. Mọi người đang nói về vấn đề C++ nhanh hơn C# mà. Còn lý do chắc bạn biết rõ hơn mình rồi.
    Còn so sánh C++ với C# thì có vô số cái để so, nhưng mình chỉ so về tốc độ hoàn thành công việc thôi. Ví dụ như thực hiện vòng lặp mình đã đưa.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi Duong_act : 18-09-2015 lúc 10:32 PM.

Các đề tài tương tự

  1. Toàn Quốc [Gấp] Thuê người hack game java mobile online và gắn keylog theo dõi vào java.
    Gửi bởi colin.phongtran trong diễn đàn Việc làm IT(tự do)
    Trả lời: 0
    Bài viết cuối: 26-12-2013, 12:52 PM
  2. Lập trình socket trong Java, 1 server kết nối nhiều client trong Java như thế nào?
    Gửi bởi detective009 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 12
    Bài viết cuối: 27-10-2013, 12:53 AM
  3. Hà Nội Tuyển 1 lập trình viên JAVA cao cấp (recruiting for Senior JAVA Developer position)
    Gửi bởi FSVietnam trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 4
    Bài viết cuối: 02-10-2013, 05:18 PM
  4. Đọc Ghi file trong java, báo lỗi java.io.NotSerializableException: java.util.Scanner
    Gửi bởi quyenktpm2 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 3
    Bài viết cuối: 13-08-2013, 11:40 AM
  5. c# và java giống và khác nhau như thế nào?
    Gửi bởi alibaba7034 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 04-01-2013, 11:59 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn