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.
Trứng rung điều khiển từ xa Vibrator Spark Of Love Sản phẩm trứng rung bluetooth có điều khiển từ xa này được thiết kế với tông màu Rose Gold viền kim khí trải qua. kích tấc 7,4cm x 3,5cm giúp trứng...
TOP 3 trùy rung điều khiển từ xa...