2012-09-28 35 views

Trả lời

19

Có, có, mặc dù nó rất cụ thể và thường không phải là một nguyên nhân quan tâm.

Tùy chọn động lực hướng dẫn trình liên kết thêm các biểu tượng vào các bảng biểu tượng không thường cần thiết trong thời gian chạy. Nó có nghĩa là có nhiều hơn, có thể nhiều hơn nữa, các biểu tượng mà mối liên kết động cần phải thông qua tại thời gian chạy cho độ phân giải biểu tượng.

Cụ thể, vì việc tra cứu bảng biểu tượng trong hệ thống dựa trên GNU được triển khai bằng cách sử dụng băm, có nhiều biểu tượng hơn làm tăng khả năng xảy ra xung đột băm. Vì tất cả các symols va chạm trong bảng băm đều nằm trong danh sách, trình liên kết thời gian chạy cần phải duyệt qua danh sách và so sánh, sử dụng memcmp, mỗi tên biểu tượng. Có nhiều biểu tượng va chạm trong ý nghĩa băm có danh sách dài hơn và do đó sẽ mất nhiều thời gian hơn để giải quyết từng ký hiệu động.

Tình trạng này hơi tồi tệ hơn đối với C++ rồi C, với vô số tên biểu tượng có tiền tố giống nhau do tên lớp. Trong thực tế, điều này chỉ ảnh hưởng lần đầu tiên mà một biểu tượng được sử dụng và như vậy, trừ khi ứng dụng của bạn là rất lớn và chứa rất nhiều biểu tượng, nó sẽ không được cảm nhận.

Trong trường hợp hiếm hoi mà ứng dụng của bạn lớn, các thủ thuật như prelinking có thể được sử dụng để khắc phục phí.

Các vấn đề liên quan