Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 3 của 7 Đầu tiênĐầu tiên 12345 ... CuốiCuối
Kết quả 21 đến 30 của 67
  1. #21
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Duong_act
    Ý 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 :
    Mã:
    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/

  2. #22
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Các bạn khai thong hộ tớ phát :

    1. Mình cài VS2015 thấy có iOS, Androi Application. C# giờ đa nền tang rồi sao ?
    2. Nhiều bạn bảo C# chậm hơn C++ nhưng mà chậm hơn bao nhiêu lần ( trung bình ) mình không rõ lắm.
    3. Người ta bảo Java là "cụ rùa" so với C++. Nhưng mà rùa như thế nào nhỉ .

  3. #23
    Trích dẫn Gửi bởi Duong_act
    Các bạn khai thong hộ tớ phát :

    1. Mình cài VS2015 thấy có iOS, Androi Application. C# giờ đa nền tang rồi sao ?
    2. Nhiều bạn bảo C# chậm hơn C++ nhưng mà chậm hơn bao nhiêu lần ( trung bình ) mình không rõ lắm.
    3. Người ta bảo Java là "cụ rùa" so với C++. Nhưng mà rùa như thế nào nhỉ .
    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).

  4. #24
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  5. #25
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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 [IMG]images/smilies/smile.png[/IMG]
    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

  6. #26

  7. #27
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi villbe
    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. [IMG]images/smilies/laughing.gif[/IMG]
    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
    [IMG]images/smilies/biggrin.png[/IMG]

    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.

  8. #28
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi villbe
    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 :
    Mã:
    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.

  9. #29
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Duong_act
    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 [IMG]images/smilies/biggrin.png[/IMG]
    Theo mình nhắm chừng thì chắc cỡ 10 lần.

  10. #30
    Ngày tham gia
    Sep 2015
    Bài viết
    0

 

 
Trang 3 của 7 Đầu tiênĐầu tiên 12345 ... CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •