Nhân Linux và windows [đã đóng]


9

Tôi làm việc trên Linux và một người bạn trên Windows 7.

Tôi đã rất ngạc nhiên về tốc độ mà NetBeans, Eclipse, pgAdmin và các chương trình khác mở ra rất nhiều, thực sự, rất nhanh trên Linux so với trên windows.

Sự khác biệt chính giữa Linux và kernel windows gây ra sự khác biệt tải thời gian đó là gì?

Cả hai máy đều có cấu hình phần cứng giống hệt nhau.


1
Thật buồn cười, trải nghiệm của tôi hoàn toàn ngược lại - trên tất cả các PC của tôi, các chương trình trong Windows có xu hướng tải nhanh hơn rất nhiều so với Linux (đặc biệt là trong Windows 7, đoán các chương trình bạn sẽ mở dựa trên việc sử dụng trước đây và tải trước chúng vào bộ nhớ ) . Có lẽ máy Windows của anh ta đầy bloatware? Là công ty chống vi-rút chỉ Windows? Bạn đã thử chạy Linux trên cùng một máy chưa (lỗi ổ cứng ảnh hưởng nghiêm trọng đến thời gian tải) .
BlueRaja - Daniel Pflughoeft

@ BlueRaja-DannyPflughoeft cảm ơn vì nhận xét của bạn. Như tôi đã nói về câu hỏi, cả hai máy đều có cùng cấu hình phần cứng, cả hai đều đi kèm với windows 7 nhưng tôi là người dùng Linux và không, cửa sổ của anh ta không bị cồng kềnh
Gerep

1
@ BlueRaja-DannyPflughoeft Tôi thấy một điều thú vị là sau khi chương trình chống vi-rút cho Windows được thiết lập, nó trở nên chậm trễ hơn nhiều. Vì vậy, trên thực tế, không cần trong bloatware, chỉ cần cài đặt một phần mềm chống vi-rút. GNU / Linux không cần một (ít nhất là vậy) và điều nhỏ này cũng mang lại hiệu năng cao hơn nhiều.
Hi-Angel

Câu trả lời:


8

Đây chỉ là phỏng đoán của tôi, nhưng tôi nghĩ rằng khi bạn làm việc cho một công ty, nơi một khi mọi thứ được biên dịch (chuyển thành dữ liệu nhị phân, máy tính có thể thực thi), không ai có thể thấy mã nguồn nữa, bạn có xu hướng lười biếng hơn rất nhiều, vì nó không quan trọng miễn là nó hoạt động .
Linux là mã nguồn mở, vì vậy mọi người đều có thể xem mã nguồn nếu họ muốn làm như vậy. Nếu bạn lười biếng, và viết một đoạn mã thực sự nhảm nhí sẽ thực sự làm chậm hệ thống hoặc một cái gì đó thuộc loại, danh tiếng của bạn, như mọi người vừa thấy. Các nhà phát triển và người dùng như nhau. Tôi nghĩ đó là một trong những lý do tại sao các nhà phát triển souyce mở có xu hướng ít lười biếng hơn.

Đó cũng là một thực tế rằng lõi của nhân Windows không bao giờ được viết với mục đích trở thành như ngày nay (không phải là Linux ', nhưng họ đã nỗ lực để tối ưu hóa các bit cũ), và các nhà phát triển luôn luôn thêm và thêm trên hết, cho đến khi mã này khó hiểu đến mức không ai có thể tạo ra thứ gì đó từ nó nữa. Hai thuộc tính của mã lộn xộn là thường có rất nhiều sự dư thừa và bạn không thấy các liên kết giữa hai đoạn mã dễ dàng nữa, điều đó khiến bạn thậm chí không thể cố gắng bắt đầu tối ưu hóa nó. Chỉ là một ví dụ (không phải là khó hiểu);

for (int i = 0; i < 20; i++)
{
    if (x == y)
    {
        if (z <= u)
        {
            goto banana;
        }
    }
}

Ví dụ trên có thể được thực hiện hiệu quả hơn nhiều;

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}

1
Tôi tin vào lĩnh vực lập trình viên, sự đồng thuận hiện tại là mã hóa lười biếng và / hoặc cẩu thả được tối ưu hóa tốt trong các trình biên dịch. Tuy nhiên, trình biên dịch không thể giúp phình to và di sản, có thể có ở đó - và liên quan đến ý định của bạn.
Chris K

4
Cả hai ví dụ mã này gần như chắc chắn sẽ biên dịch cùng một thứ (trừ chức năng gọi so với goto) ...
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft Tôi biết, nhưng tôi cần một ví dụ đơn giản để giải thích nó.
RobinJ

5

Một vấn đề lớn khác chưa được đề cập là Linux có hệ thống tập tin tốt hơn. Hiệu năng của NTFS với các tệp nhỏ không phải là tuyệt vời - ext3 tốt hơn và ext4 tốt hơn nhiều. Có một số suy đoán thú vị về lý do tại sao trong một câu hỏi khác .

Khi bạn đang mở một chương trình, một lượng đáng kể thời gian khởi động đang tải một loạt các tệp nhỏ từ đĩa, do đó, việc có một hệ thống tệp thực hiện nhanh chóng là rất quan trọng.


4

Đây chỉ là ý kiến ​​của tôi nhưng tôi nghĩ có nhiều lý do khiến hệ thống GNU / Linux nhanh hơn Windows và không phải tất cả đều liên quan đến kernel:

  • Rõ ràng có lý do được giải thích bởi RobinJ, khá rõ ràng rằng nếu phần mềm là nguồn mở, mã có xu hướng được viết hiệu quả hơn
  • Linux sử dụng các thành phần được tối ưu hóa, ví dụ, nó sử dụng một bộ lập lịch rất tối ưu hóa có xu hướng tối đa hóa việc sử dụng CPU.
  • Các hệ thống Linux chịu ít sự phân mảnh bộ nhớ
  • Các hệ thống Linux sử dụng bộ nhớ chính tốt hơn và thường có xu hướng sử dụng ồ ạt bộ đệm, các hệ thống Windows thay vào đó có xu hướng sử dụng ồ ạt bộ nhớ ảo
  • Hạt nhân Linux được cập nhật liên tục và các phần vô dụng thường bị loại bỏ, mặc dù Linus Torvalds nói rằng nhân Linux đang trở nên "khổng lồ và cồng kềnh", trong các bản cập nhật đối lập với hạt nhân NT thường được xây dựng trên đầu trang của hạt nhân hiện có.

3

Tôi tin rằng hạt nhân một mình không phải là câu trả lời. Windows 7 là lần đầu tiên Windows đủ đáp ứng mà tôi cho rằng nó có thể chấp nhận được.

Tôi tin rằng sự khác biệt về tốc độ có liên quan đến suy nghĩ của @ RobinJ về công nghệ phần mềm. Mọi thứ * trong Windows được xây dựng trên MSDN thông qua một số loại khung Microsoft hoặc loại khác. Điều này thực sự liên quan đến việc Big Business yêu Microsoft như thế nào; Microsoft là tất cả về việc giúp các chương trình / bộ / công nghệ khác nhau nói chuyện với nhau.

Tiếp theo ... để giúp các nhà phát triển dễ dàng hơn trong việc cung cấp các yếu tố cần thiết (và không phát minh lại bánh xe), Microsoft cho phép các nhà sản xuất đóng gói và / hoặc yêu cầu các thư viện được biên dịch sẵn như Microsoft Visual C ++ 2008 Redistributable. Hoặc .Net4.0, MSSQL 2005, quảng cáo. Có những thứ giống như các gói trị giá mười năm mà các nhà phát triển có thể sử dụng và xây dựng và yêu cầu người dùng cuối phải cài đặt trên máy tính Windows của họ để sử dụng phần mềm mới.

Vì vậy, để chương trình Zyzzyx tải và chạy, một hoặc nhiều thư viện phân phối lại MSDN phải có mặt và chạy. Các thư viện này xác định cách các chương trình tương tác với HĐH.

Để giải quyết vấn đề này, tôi sẽ phản đối rằng khả năng tương thích có chủ ý của Window trong nhiều thập kỷ phần mềm khiến nó trở nên cồng kềnh và đôi khi chậm hơn một hệ thống linux có thể so sánh được. Cũng lưu ý rằng tôi đã phát triển phần mềm trực quan cho windows nhưng không phải bất kỳ phần mềm nào cho linux ... không phải GTK, Qt, Py, bất cứ điều gì, vì vậy các giả định của tôi về linux ít bị cồng kềnh chỉ là như vậy.

được chỉnh sửa để thêm: hơn nữa, phần mềm FOSS luôn có người cải thiện nó, vì vậy GTK sẽ cải thiện khi thời gian trôi qua thay vì GTK-2005 và GTK-2008 ở trên cùng một máy tính, trong khi Microsoft luôn làm vậy.

* - ok có ngoại lệ, tôi chắc chắn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.