เคอร์เนล Linux และ windows [ปิด]


9

ฉันทำงานบน Linux และเป็นเพื่อนกับ Windows 7

ฉันรู้สึกประหลาดใจเกี่ยวกับความเร็วที่ NetBeans, Eclipse, pgAdmin และโปรแกรมอื่น ๆ เปิดเยอะมากจริงๆเร็วกว่าบน Linux มากกว่าบน windows

อะไรคือความแตกต่างที่สำคัญระหว่าง Linux และ windows kernel ที่ทำให้เกิดความแตกต่างของการโหลดครั้งนั้น?

เครื่องทั้งสองมีการกำหนดค่าฮาร์ดแวร์เดียวกันทั้งหมด


1
ตลกประสบการณ์ของฉันตรงข้าม - ในพีซีของฉันทุกโปรแกรมใน Windows มักโหลดเร็วกว่าบน Linux (โดยเฉพาะใน Windows 7 ซึ่งเดาได้ว่าโปรแกรมใดที่คุณจะเปิดตามการใช้งานที่ผ่านมาและโหลดไว้ในหน่วยความจำล่วงหน้า ) . บางทีเครื่อง Windows ของเขาเต็มไปด้วย bloatware? บริษัท ต่อต้านไวรัส Windows เท่านั้นหรือไม่ คุณได้ลองใช้ Linux ในเครื่องเดียวกัน(ล้มเหลวฮาร์ดไดรฟ์ที่มีผลกระทบต่อเวลาในการโหลดอย่างเห็นได้ชัด)
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft ขอบคุณสำหรับความคิดเห็นของคุณ ตามที่ฉันบอกในคำถามเครื่องทั้งสองมีการกำหนดค่าฮาร์ดแวร์เดียวกันทั้งสองมาพร้อมกับ windows 7 แต่ฉันเป็นผู้ใช้ Linux และไม่ windows ของเขาไม่ป่อง
Gerep

1
@ BlueRaja-DannyPflughoeft ฉันพบสิ่งที่น่าสนใจว่าหลังจากที่มีการตั้งค่าการป้องกันไวรัสไปยัง Windows มันจะกลายเป็นความล่าช้ามากขึ้น ดังนั้นในความเป็นจริงไม่จำเป็นต้องมีใน bloatware เพียงแค่ติดตั้งโปรแกรมป้องกันไวรัส GNU / Linux ยังไม่ต้องการ(อย่างน้อย)และสิ่งเล็ก ๆ นี้ก็ให้ประสิทธิภาพมากกว่าเช่นกัน
Hi-Angel

คำตอบ:


8

นี่เป็นเพียงการคาดเดาของฉัน แต่ฉันคิดว่าเมื่อคุณทำงานกับ บริษัท ซึ่งเมื่อทุกอย่างถูกคอมไพล์ (แปลงเป็นข้อมูลไบนารีซึ่งคอมพิวเตอร์สามารถดำเนินการได้) ไม่มีใครสามารถเห็นซอร์สโค้ดได้อีกต่อไปคุณมักจะขี้เกียจมากขึ้น มันไม่สำคัญตราบใดที่มันใช้งานได้
Linux เป็นโอเพ่นซอร์สดังนั้นทุกคนสามารถดูซอร์สโค้ดได้หากต้องการจะทำ หากคุณขี้เกียจและเขียนโค้ดที่เส็งเคร็งจริงๆซึ่งจะทำให้ระบบช้าลงหรือสิ่งแปลก ๆ นั่นก็ทำให้คุณมีชื่อเสียงโด่งดังตามที่ทุกคนเพิ่งเห็น นักพัฒนาและผู้ใช้เหมือนกัน ฉันคิดว่านั่นเป็นหนึ่งในเหตุผลที่นักพัฒนาที่เปิดกว้างมักจะขี้เกียจน้อยกว่า

นอกจากนี้ยังเป็นความจริงที่ว่าแกนของเคอร์เนลของ Windows ไม่เคยถูกเขียนด้วยความตั้งใจที่จะกลายเป็นสิ่งที่เป็นอยู่ทุกวันนี้ (ไม่ใช่ Linux 'แต่พวกเขาพยายามเพิ่มประสิทธิภาพบิตเก่า) และนักพัฒนาก็เพิ่มและเพิ่มเข้าไปเสมอ ด้านบนของมันจนกว่ารหัสจะเป็นความลับจนไม่มีใครสามารถทำอะไรบางอย่างจากมันอีกต่อไป คุณสมบัติของรหัสยุ่งสองอย่างคือมักจะมีความซ้ำซ้อนจำนวนมากและคุณไม่เห็นลิงก์ระหว่างรหัสสองชิ้นอย่างง่ายดายอีกต่อไปซึ่งทำให้คุณไม่สามารถลองเพิ่มประสิทธิภาพได้ เป็นเพียงตัวอย่าง (ไม่ใช่รูปแบบลับ ๆ );

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

ตัวอย่างข้างต้นสามารถทำได้อย่างมีประสิทธิภาพมากขึ้น

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

1
ฉันเชื่อว่าในส่วนของโปรแกรมเมอร์ความเห็นร่วมในปัจจุบันคือความขี้เกียจและ / หรือการเขียนโค้ดเลอะเทอะนั้นได้รับการปรับให้เหมาะสมในคอมไพเลอร์ อย่างไรก็ตามคอมไพเลอร์ไม่สามารถช่วย bloat และมรดกซึ่งอาจมี - และเกี่ยวข้องกับความตั้งใจของคุณ
Chris K

4
ตัวอย่างโค้ดทั้งสองนี้เกือบจะรวบรวมเป็นสิ่งเดียวกัน (ลบด้วยฟังก์ชั่นการโทรกับ goto) ...
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft ฉันรู้ แต่ฉันต้องการตัวอย่างง่ายๆในการอธิบาย
RobinJ

5

อีกเรื่องใหญ่ที่ไม่ได้กล่าวถึงคือ Linux มีระบบไฟล์ที่ดีกว่า ประสิทธิภาพของระบบไฟล์ NTFS ที่มีไฟล์ขนาดเล็กนั้นยอดเยี่ยม - ext3 นั้นดีกว่าและ ext4 นั้นดีกว่ามาก มีบางเก็งกำไรที่น่าสนใจเกี่ยวกับเหตุผลที่เป็นในคำถามอื่น

เมื่อคุณเปิดโปรแกรมระยะเวลาเริ่มต้นที่สำคัญคือการโหลดไฟล์เล็ก ๆ จำนวนมากจากดิสก์ดังนั้นการมีระบบไฟล์ที่ทำได้รวดเร็วเป็นสิ่งสำคัญมาก


4

นี่เป็นเพียงความคิดเห็นของฉัน แต่ฉันคิดว่ามีเหตุผลหลายประการสำหรับระบบ GNU / Linux ที่เร็วกว่า Windows และไม่ใช่ทั้งหมดที่เกี่ยวข้องกับเคอร์เนล:

  • เห็นได้ชัดว่ามีเหตุผลอธิบายโดย RobinJ มันค่อนข้างชัดเจนว่าถ้าซอฟต์แวร์เป็นโอเพนซอร์ซรหัสมีแนวโน้มที่จะเขียนได้อย่างมีประสิทธิภาพมากขึ้น
  • Linux ใช้ประโยชน์จากส่วนประกอบที่ปรับให้เหมาะสมที่สุดตัวอย่างเช่นใช้ตัวกำหนดตารางเวลาที่ปรับให้เหมาะสมที่สุดซึ่งมีแนวโน้มที่จะเพิ่มการใช้งาน CPU ให้สูงสุด
  • ระบบ Linux ประสบน้อยลงจากการกระจายตัวของหน่วยความจำ
  • ระบบลีนุกซ์ใช้หน่วยความจำหลักได้ดีกว่าและมักจะใช้แคชอย่างหนาแน่นระบบ Windows มักจะใช้หน่วยความจำเสมือนอย่างหนาแน่น
  • เคอร์เนล Linux ได้รับการปรับปรุงอย่างต่อเนื่องและชิ้นส่วนที่ไร้ประโยชน์มักจะถูกลบออกแม้ว่า Linus Torvalds กล่าวว่าเคอร์เนล Linux กำลังกลายเป็น "ขนาดใหญ่และโต" ในการต่อต้านการอัปเดตเคอร์เนล NT มักจะสร้างอยู่ด้านบนของที่มีอยู่

3

ฉันเชื่อว่าเคอร์เนลเพียงอย่างเดียวไม่ใช่คำตอบ Windows 7 เป็นครั้งแรกที่ Windows ตอบสนองพอที่ฉันคิดว่ามันเป็นที่ยอมรับ

ฉันเชื่อว่าส่วนต่างของความเร็วนั้นเกี่ยวข้องกับความคิดของ @ RobinJ ในด้านวิศวกรรมซอฟต์แวร์ ทุกอย่าง * ใน Windows สร้างขึ้นบน MSDN ผ่านกรอบงาน Microsoft บางประเภทหรืออย่างอื่น เรื่องนี้เกี่ยวข้องกับความจริงที่ว่าธุรกิจขนาดใหญ่ชอบ Microsoft Microsoft คือทั้งหมดที่เกี่ยวกับการช่วยเหลือโปรแกรม / ชุด / เทคโนโลยีที่แตกต่างกันพูดคุยกัน

ถัดไป ... เพื่อให้ง่ายขึ้นสำหรับผู้พัฒนาที่จะมีสิ่งจำเป็นที่ครอบคลุม (และไม่รวมล้อเลื่อน) Microsoft อนุญาตให้ผู้ผลิตรวมกลุ่มและ / หรือต้องการไลบรารีที่คอมไพล์แล้วเช่น Microsoft Visual C ++ 2008 สามารถแจกจ่ายต่อได้ หรือ. Net4.0, MSSQL 2005, คลื่นไส้โฆษณา มีบางสิ่งที่ผู้พัฒนาแพ็คเกจสามารถใช้และต่อเติมได้และต้องการผู้ใช้ปลายทางเพื่อติดตั้งบนคอมพิวเตอร์ Windows ของพวกเขาเพื่อใช้ซอฟต์แวร์ใหม่

ดังนั้นเพื่อให้โปรแกรม Zyzzyx ทำการโหลดและรันไลบรารีที่สามารถแจกจ่ายต่อได้ MSDN หนึ่งไลบรารีขึ้นไปจะต้องมีอยู่และทำงานอยู่ ไลบรารีเหล่านี้กำหนดวิธีที่โปรแกรมโต้ตอบกับระบบปฏิบัติการ

เพื่อต้มมันลงฉันจะเข้าใจว่าความเข้ากันได้ของ Windows ในหลายทศวรรษของซอฟแวร์ทำให้มันบวมและบางครั้งช้ากว่าระบบลินุกซ์ที่เทียบเคียงกันได้ นอกจากนี้โปรดทราบว่าฉันได้พัฒนาซอฟต์แวร์ภาพสำหรับ windows แต่ไม่มีซอฟต์แวร์ใด ๆ สำหรับ linux ... ไม่ใช่ GTK, Qt, Py อะไรเลยดังนั้นสมมติฐานของฉันเกี่ยวกับ linux ที่มีความป่องน้อยลงก็เป็นเช่นนั้น

แก้ไขเพื่อเพิ่ม:ยิ่งไปกว่านั้นซอฟต์แวร์ FOSS มีคนปรับปรุงอยู่ตลอดเวลาดังนั้น GTK จะปรับปรุงเมื่อเวลาผ่านไปแทนที่จะเป็น GTK-2005 และ GTK-2008 บนคอมพิวเตอร์เครื่องเดียวกันในขณะที่ Microsoft ทำเช่นนั้นตลอดเวลา

* - โอเคมีข้อยกเว้นฉันแน่ใจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.