ที่ BentUser มีการทดสอบประสิทธิภาพสองแพลทฟอร์มคู่กัดในการพัฒนาโปรแกรมยุคใหม่ .NET 2.0 และ Java 1.5 ผลสรุปว่า .NET ชนะ 2 ใน 3 การทดสอบ รายละเอียดเกี่ยวกับการทดสอบอ่านได้จากลิงก์ข้างต้น
ก่อนที่แฟนๆ ทั้งฝ่าย Java และ .NET จะทะเลาะกันเช่นเดียวกับฟอรัมอื่นๆ ขอให้นึกไว้เสียว่า การทดสอบ benchmark แบบนี้ไม่มีผลที่ถูกต้องแท้จริงอยู่แล้ว benchmark เป็นเครื่องมือในการยืนยันความเชื่อซะมากกว่า ยิ่งไม่ต้องลืมว่า benchmark สามารถโกงได้อีกด้วย (nVidia ทำมาแล้วนะครับ)ดังนั้นอ่านเอาความรู้เฉยๆ ดีกว่าครับ
การทดสอบจะเป็นกลางขนาดไหนไม่รู้ แต่ผมค่อนข้างชอบข้อสรุปของบทความนี้ คือ .NET และ Java ทำให้การเขียนโค้ดง่ายขึ้นจริง แต่โปรแกรมที่เราใช้อยู่ทุกวี่วันยังเป็น C/C++ กันทั้งนั้น การใช้แพลทฟอร์มในการพัฒนาแบบ dynamic ที่มี managed code ต้องแลกมาด้วยข้อเสียในเรื่องประสิทธิภาพอยู่แล้ว เมื่อเทียบกับ native ถ้าคุณตัดสินใจเลือก Java/.NET ด้วยเหตุผลด้านความง่ายในการพัฒนาตั้งแต่แรก เรื่องประสิทธิภาพก็ไม่ต้องใส่ใจมากมายครับ
Comments
โดยส่วนตัวที่ใช้งานมาเองรู้สึกว่า .NET เร็วกว่าตั้งนานแล้ว แต่เรื่องนี้ก็คงมีข้อโต้แย้งว่า Java นั้นเป็น Platform-Independent อย่างแท้จริง มากกว่า .NET
ลองสองแพลตฟอร์มนี้มานาน ผมกลับรู้สึกว่าโลกเดสก์ทอปยังไม่พร้อมสำหรับ Managed Code พวกนี้เลย เพราะที่ว่าความเร็วเครื่องในวันนี้สูงพอที่จะเอามาจ่ายเป็น Overhead นั้นดูเหมือนยังไม่จริงซักเท่าใหร่
เคยพยายามพอร์ตตัวเองไปอยู่ Java มาพักหนึ่ง พบว่าโปรแกรมต่างๆ เมื่อใช้รวมๆ กันแล้ว เครื่องแทบจะเดี๊ยงเอา วันนี้โปรแกรมที่ใช้แล้วเหลือรอดก็มีแต่ jEdit ที่กำลังวางแผนจะเอาออกเพราะมันกินแรมผมไป 40 เมก มันมากเกินไปสำหรับ Text-Editor
เรื่องการโกงก็เคยเจอมาบ้างที่การ์ดจอ Asus มีการ Overclock มาจากโรงงานเลย ส่วนพวก Benchmark นี่โกงกันตั้งแต่ผมยังไม่เริ่มจับคอมเลยก็มีมาแล้ว
lewcpe.com, @wasonliw
ตามอยู่ที่ OSNEWs เหมือนกับครับ(ตอบไป 2 reply) มันเป็นเปรียบเทียบ .NET2.0 กะ Java 5 ซึ่ง .NET 2.0 ออกหลัง Java 5 ตั้งนาน(เกือบๆครึ่งปี ถึงปีนึงด้วยซ้ำ) ถ้ามันไม่ดีกว่าก็ให้มันรู้ไปครับ
ป.ล. โกง VGA ATI ก็ทำนะ
โลกนี้ยังมีคนไช้ apple กะ linux .net คงไม่สามารถยึดครองตลาดใด้แบบ ie .... แต่ .net ก็เร็วกว่า java จริงๆ java น่าจะทำโปรแกรมใหม่ให้ไปคำนวณที่เครื่องตัวเองแบบ .net เพื่อการชนะที่สมบูรณ์
ก็ว่ากันไปครับ บทความถ้าออกจากฝั่ง microsoft จะให้บอก Java ชนะ มันก็ยังไงๆ อยู่
ของอย่างนี้ก็ bias กันไป ทีใครทีมันครับ ตามไปอ่านมาแล้ว ปรากฏว่า การทดสอบแบ่งเป็น 3 การทดสอบดังนี้
- ความเร็วของการทำงาน โดยเน้นที่การใช้ memory หนักๆ โดยใช้ selection sort ซึ่งเป็นการ sort แบบไม่ค่อยมีประสิทธิภาพ เพราะต้องใช้ memory สูง
การทดสอบนี้ .Net ชนะไป
- การทดสอบที่สอง เป็นการทดสอบประสิทธิภาพของการจัดการ memory ทดสอบโดยแข่งกัน allocate สร้าง float 100,000 ตัว ใครเสร็จก่อนชนะ
การทดสอบนี้ Java ชนะไป
- การทดสอบที่สาม เป็นการตบหัว Java อีกรอบโดยเป็นเรื่องเดิมคือการ ทดสอบประสิทธิภาพของการจัดการ memory ในการใช้งานแบบ real world application
ต้องกล่าวเพิ่มเติมหน่อยตรงที่ .Net กับ Java นั้น implement native type แตกต่างกัน Java ถ้าเป็น native type จะไม่ใช่ Object type คือถ้าจะใช้งานแบบให้เป็น Object type ต้องใช้ Wrapper Class มาหุ้มอีกทีนึงก่อน
แตกต่างจาก .Net ที่ treat เจ้า native type ต่างๆ เหมือนเป็น object type จริงๆ
ผลการทดสอบก็ออกมาตามคาด .Net ก็ชนะไป
ส่วนตัวมองการทดสอบนี้ไม่ค่อย แฟร์ เท่าไหร่ เหมือนรู้อยู่แล้วว่า Java มีจุดอ่อนตรงไหน ก็ไปทำ benchmark ตรงนั้นซะงั้น
ไม่ค่อยเชื่อผลทดสอบแบบนี้เท่าไหร่
จะใช้อะไรก็ใช้เหอะ
onedd.net
no comment เพราะผมทำงานด้าน graphic เสียมากกว่า.. แต่ยังไงก็แอบเชียร์ java อยู่ลึกๆ ... เพราะผมยังใช้ Apple ทำงานเป็นหลัก
ถ้าไม่สนผล benchmark ครั้งนี้
ผมว่า syntax และ semantic ของ .NET มัน familiar มากกว่า Java สำหรับคนเขียน C มาก่อนอย่างผมนะครับ
และ Java ก็ยังเน้นเรื่อง backward compatible มากไปจนทำให้ประสิทธิภาพลดลงพอสมควร security ก็สู้ .NET ไม่ได้(โดยเฉพาะเรื่อง Generic ของ Java 5 ก็เห็นได้ว่ามันไม่ใช่แค่ประสิทธิภาพลด แต่มันคือรัน code บางแบบไม่ได้เลย)
ซักวันเมื่อเครื่องแรงพอ managed code นี่คงจะเป็นอะไรที่เป็นตัวเลือกอันดับหนึ่งแหละครับ C/C++ นี่ข้อเสียเรื่อง memory management นี่ก็เป็นปัญหากับ programmer พอสมควรเลยนะครับ (เป็นสาเหตุที่ทำให้ผมไม่ใช้ firefox ล่ะครับ)
"Java ก็ยังเน้นเรื่อง backward compatible มากไป"
เห็นด้วยนะคร้าบบบบบบบบบบบบบ ผมลุ้นอยู่ว่าถ้า Sun ยอมรื้อสักรอบ อะไรๆน่าจะดีขึ้นกว่านี้
หรือว่า Java5 ออก Generic มาก่อน เพื่อลองของก่อน MS???
ผมว่าโอกาสที่จะริ้อคงยากครับเพราะ Sun เน้นเรื่อง backward compatability ค่่อนข้างมาก แต่ยังไงผมก็ยังเชื่อมั่นในอนาคตของ Java ว่าจะยังดีขึ้นไปเรื่อยๆแน่นอนครับ
ตอนนี้ก็รอ Java 6.0 อยู่อย่างใจจดใจจ่อ
ผมคิดว่า นักคอมพิวเตอร์ช่วงหลังๆ จะคำนึงเรื่อง Reliability, Security และ Reusaibility มากกว่า Performance ครับ โดยเฉพาะเรื่อง Project's Success ทำให้ VM มีบทบาทตรงนี้มาก เพราะหลายๆ Application ที่เป็นผลผลิตของนักคอมพิวเตอร์มีปัญหาอย่างหนักที่ 1.ทำไม่ค่อยทัน ยิ่งโครงการเก่ายิ่งแก้บักนาน 2.ตั้งอยู่ได้ไม่นาน (ไม่ค่อยเสถียร) 3.ยากในเรื่อง Portable แม้ Performance จะตกลง แต่ก็แลกมาซึ่งข้อดีอีกหลายอย่าง ผมว่าคุ้มครับ ที่จะใช้ .NET หรือ Java platform ในการพัฒนาซอฟแวร์ ทุกวันนี้การผลิตซอฟแวร์จะต้องเกี่ยวกับเงิน งานวิจัยทาง Software Engineering จึงมีบทบาทในการกำหนดทิศทางของการพัฒนาซอฟแวร์ครับ
สงสารคนงบน้อยหน่อยซิครับ performance ก็ยังสำคัญนะครับ ก็รอดู jdk 6.0 เนี่ยแหละครับ ว่าจะเร็วขึ้นกว่าเก่าไหม