Tò mò về số reputed performance gains trong xobotos, tôi đã kiểm tra cây nhị phân benchmark code.XobotOS: Tại sao điểm chuẩn cây nhị phân C# sử dụng cấu trúc?
Java phiên bản của binary tree node là:
private static class TreeNode
{
private TreeNode left, right;
private int item;
}
Các C# version là:
struct TreeNode
{
class Next
{
public TreeNode left, right;
}
private Next next;
private int item;
}
Tôi đang tự hỏi điều gì lợi ích của việc sử dụng một cấu trúc ở đây là, kể từ khi Next và con trỏ trước vẫn được đóng gói trong một lớp học.
Vâng, có một nút lá là các loại giá trị thuần túy vì chúng không cần con trỏ trái và phải. Trong một cây nhị phân điển hình, nơi một nửa các nút là lá, điều đó có nghĩa là giảm 50% số lượng đối tượng. Tuy nhiên, lợi nhuận hiệu suất được liệt kê dường như lớn hơn nhiều.
Câu hỏi: Còn nhiều điều nữa không?
Ngoài ra, vì tôi không nghĩ đến việc xác định các nút cây theo cách này trong C# (cảm ơn Xamarin!) Các cấu trúc dữ liệu khác có thể hưởng lợi từ việc sử dụng cấu trúc theo cách không rõ ràng? (Mặc dù đó là một chút off-topic và mở kết thúc.)
Và mức tăng hiệu suất bạn đề cập là gì? – leppie
Nhìn vào mã ngay bây giờ, rõ ràng là ai đó đã sao chép nó từ mã C mà không thực sự biết họ đang làm gì (hoặc ít nhất là làm theo cách rất ngớ ngẩn). – leppie