2010-03-02 41 views
5

Tôi hiện đang trong quá trình lập hồ sơ hiệu suất. Chúng tôi có một ứng dụng khách/máy chủ cơ bản. Tốc độ truyền TCP có khác nhau không nếu tôi chạy máy khách/máy chủ trên cùng một máy (localhost) so với hai máy tính trên mạng LAN?localhost vs LAN: chênh lệch tốc độ?

Trả lời

6

Tốc độ truyền TCP sẽ là! bởi vì nếu bạn chạy nó trên cùng một máy tính, nó sẽ chuyển tiếp các gói dữ liệu cục bộ mà không cần chạm vào mạng LAN và bộ điều hợp mạng.

Nhưng tốc độ tổng thể của máy khách + máy chủ có thể tốt hơn trên các máy khác nhau, đặc biệt nếu bạn không liên lạc với máy chủ quá thường xuyên.

+0

@Andrey: Điều này không nhất thiết phải đúng.Các kết nối cục bộ vẫn được truyền qua bộ điều hợp bằng cách sử dụng vòng lặp nếu ứng dụng quyết định rằng nó sử dụng lớp mạng để truyền. –

+2

vui lòng giải thích cách ứng dụng có thể ra lệnh sử dụng mạng? – Andrey

-1

Nó thực sự phụ thuộc vào những gì ứng dụng của bạn không ....

Như một ví dụ: Nếu nó chuyển file 10GB từ client tới server, sau đó có, nó sẽ tạo sự khác biệt.

3

Có chắc chắn, thời gian chờ gửi qua mạng sẽ làm chậm chương trình. Thông lượng sẽ không nhưng nếu bạn đang chờ trả lời trước khi gửi dữ liệu thì điều này sẽ tăng lên do độ trễ thêm.

+0

Đối với máy chủ cục bộ, tôi nhận được thời gian ping là 0.024ms, để ping bộ định tuyến của tôi, tôi nhận được thời gian 0.339ms – Earlz

+0

LnDCobra, đây thực sự là một câu trả lời tuyệt vời. "Nếu bạn đang chờ trả lời" ... điều này xảy ra khi bạn nói chuyện với ai đó trên skype. Toàn bộ cuộc hội thoại chậm lại do một vài phút trễ. –

+0

Có, nếu bạn nghĩ về sự khác biệt giữa 0.024 và 0.339 là rất lớn, theo những thời gian localhost nhanh hơn khoảng 15 lần so với LAN. –

0

Tôi không biết liệu nó có thể đo lường được hay không (điều đó cũng phụ thuộc vào tốc độ mạng LAN của bạn) nhưng từ một quan điểm logic, tất nhiên có sự khác biệt. Localhost sẽ luôn là nhanh nhất vì dữ liệu không được gửi qua môi trường khác (như không khí hoặc dây đồng).

Nhưng tùy thuộc vào ứng dụng của bạn, điều này có thể hoặc không quan trọng.

1

Khi sử dụng máy chủ cục bộ, tài nguyên cục bộ có nhiều khả năng là nút cổ chai hiệu suất do bộ nhớ, đĩa, cpu, v.v. Khi sử dụng hai máy tính, mạng của bạn càng bị nghẽn vì độ trễ, băng thông, thông lượng, mất gói tin, v.v.

Tùy thuộc vào ứng dụng của bạn làm gì và cách ứng dụng sử dụng mạng, máy khách và máy chủ.

0

Thời gian chuyển sẽ gần như chắc chắn sẽ nhanh hơn nếu máy khách và máy chủ ở trên cùng một máy. Điều đó có thể không thực sự quan trọng đối với hiệu suất của chương trình của bạn như một toàn bộ tùy thuộc vào các nguồn lực khác được tiêu thụ bởi khách hàng và máy chủ.

2

Tôi vừa nhấn vấn đề này vào một dự án tại nơi làm việc. Sử dụng UDP với localhost ít nhất là một thứ tự cường độ nhanh hơn so với kết nối mạng (có thể là hai đơn vị độ lớn), và tôi tin rằng với localhost không có MTU trần 1500 như thường lệ cho các cổng mạng.

Một nghi ngờ không được xác nhận là các cổng mạng được xây dựng trên PC không phải là chất lượng như nhau, vì vậy ngay cả khi chúng tuyên bố là gigabit, bạn có thể không thực sự nhanh như vậy. Nhưng nó cũng có thể được thực hiện rất nhiều cuộc gọi hệ thống Windows (một cuộc gọi hệ điều hành cho mỗi gói) có thể là một chi phí đáng kể. Với TCP, tôi có thể trao cho OS một đoạn dữ liệu lớn để viết trong một cuộc gọi duy nhất. Với UDP, tôi phải giao một gói một lúc, bị giới hạn bởi kích thước MTU, dẫn đến số lượng các cuộc gọi hệ điều hành lớn hơn nhiều. Nhưng chưa được xác nhận.

Chưa thử Linux.

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