News

พิสูจน์ความเร็ว Android NDK(Native Development Kit)

หลังจาก Google ได้ปล่อยเจ้า Android NDK(http://www.droidsans.com/node/712) เลยอยากทดลองนิดหน่อยว่า ถ้าหากมีการคำนวณเล็กๆน้อยๆ การเรียกใช้การคำนวณผ่าน NDK กับการคำนวณใน Dalvik VM จะมีความเร็วในการประมวลผลต่างกันมากหรือไม่ ผมจึงได้ทดลองเขียนโปรแกรมเล็กๆประมวลผล บวก ลบ คูณ หาร นิดหน่อย (แต่วนลูปทำหลายรอบ^^) แล้วก็จับเวลาวัดผล มีกราฟมาให้ดูด้วยคร้าบบ

จากกราฟเพื่อความชัดเจนยิ่งขึ้นผมจึงได้ทดลองรันโปรแกรมตัวเดียวกันที่หลายความเร็ว CPU บนเจ้า HTC G1 ผลการทดลองก็จะเห็นได้ว่าการประมวลผลบน native นั้นเร็วกว่าบน Dalvik VM (ถึงแม้จะไม่หวือหวาก็ตาม) แต่ในการทดลองนี้ได้ใช้เพียงการประมวลผลทางคณิตศาสตร์ง่ายๆเท่านั้นเป็นตัวชี้วัด จึงยังสรุปไม่ได้ว่าการเรียกใช้ NDK นั้นจะช่วยให้เจ้า Android เร็วขึ้นมากเพียงใด

เป็นไปตามคาดครับว่าเจ้า NDK ไม่ได้ทำให้เจ้า Android เร็วจี๋เหมือน WebOS หรือ IPhone แต่ก็ไม่ได้ไร้ประโยชน์ซะทีเดียว ก็ต้องดูกันต่อไปครับว่าเจ้าตัวเขียวของเราจะกลายเป็น I-Robot เมื่อไหร่กัน 🙂

ผมขอจบการทดลองเพียงเท่านี้นะคร้าบบบบบ

หลังจาก Google ได้ปล่อยเจ้า Android NDK(https://droidsans.com/node/712) เลยอยากทดลองนิดหน่อยว่า ถ้าหากมีการคำนวณเล็กๆน้อยๆ การเรียกใช้การคำนวณผ่าน NDK กับการคำนวณใน Dalvik VM จะมีความเร็วในการประมวลผลต่างกันมากหรือไม่ ผมจึงได้ทดลองเขียนโปรแกรมเล็กๆประมวลผล บวก ลบ คูณ หาร นิดหน่อย (แต่วนลูปทำหลายรอบ^^) แล้วก็จับเวลาวัดผล มีกราฟมาให้ดูด้วยคร้าบบ

จากกราฟเพื่อความชัดเจนยิ่งขึ้นผมจึงได้ทดลองรันโปรแกรมตัวเดียวกันที่หลายความเร็ว CPU บนเจ้า HTC G1 ผลการทดลองก็จะเห็นได้ว่าการประมวลผลบน native นั้นเร็วกว่าบน Dalvik VM (ถึงแม้จะไม่หวือหวาก็ตาม) แต่ในการทดลองนี้ได้ใช้เพียงการประมวลผลทางคณิตศาสตร์ง่ายๆเท่านั้นเป็นตัวชี้วัด จึงยังสรุปไม่ได้ว่าการเรียกใช้ NDK นั้นจะช่วยให้เจ้า Android เร็วขึ้นมากเพียงใด

เป็นไปตามคาดครับว่าเจ้า NDK ไม่ได้ทำให้เจ้า Android เร็วจี๋เหมือน WebOS หรือ IPhone แต่ก็ไม่ได้ไร้ประโยชน์ซะทีเดียว ก็ต้องดูกันต่อไปครับว่าเจ้าตัวเขียวของเราจะกลายเป็น I-Robot เมื่อไหร่กัน 🙂

ผมขอจบการทดลองเพียงเท่านี้นะคร้าบบบบบ

6 Comments

  1. nuuneoi Post on June 29, 2009 at 5:32 am

    #1901

    สุดยอด! ทดลองเองซะด้วย เดี๋ยวแปลเป็นภาษาอังกฤษผลักดันน้องมิ้ลค์ให้โด่งดัง ฮ่าๆ

    แต่พอจะมี Technical Term มั้ย เช่นว่าวนลูปกี่รอบ ใช้คำสั่งอะไร เอามาเป็นโค้ดเลยก็ได้อ่ะ (ถ้าให้ได้นะ)

    • kanatorn

      kanatorn Post on June 29, 2009 at 5:41 am

      #1902

      อะเจ้ยยย โค้ดมันเอาเลขมาหารๆๆๆกันเฉยๆค้าบบบ แล้วก็วนลูปแสนรอบไม่มี technical อะไรเล้ย T T

    • nuuneoi Post on June 29, 2009 at 5:47 am

      #1903

      นั่นแหละ เวลาเค้าจะทดสอบความเร็วในการประมวลผลเค้าก็ทำงั้น

      แต่ว่าผลออกมาแบบนี้ก็คิดได้หลายอย่างนะ เช่นว่า Java ของ Android มีประสิทธิภาพ

    • kanatorn

      kanatorn Post on June 29, 2009 at 6:16 am

      #1905

      จริงๆเท่าที่เล่นมาสิ่งที่ทำให้ Android ดูช้าขัดใจมากน่าจะมาจากสองสาเหตุหลัก
      1. การทำงานของ GC เหมือนที่พี่เนยเคยบอก อันนี้เจอบ่อย จู่ๆก็กระตุ๊กกระตุกซะงั้น
      2. การรัน background service อันนี้ต้องลงโปรแกรมหลายๆตัวแล้วนั่งสังเกตเรื่อยๆ เช่นเวลาถึงรอบอัพเดทเมลล์ เครื่องจะช้าได้ใจทันที

      *การเพิ่ม clock แทบจะไม่ได้ช่วยลดปัญหาตอน GC ทำงาน มันก็จะกระตุ๊กกระตุกๆ เหมือนเดิม แต่มันจะทำให้ทุกอย่างไหลลื่นขึ้นในช่วงปกติ(ตอน GC นอนหลับ)

      ปล. สมมุติฐานนะค้าบ

    • mossila

      mossila Post on June 29, 2009 at 4:49 pm

      #1907

      น่าจะเขียน 2 เรื่องนี้เป็น entry นึงเลยนะรายละเอียดมันน่าจะมีประโยชน์ 🙂

  2. bangdew

    milky Post on June 29, 2009 at 6:10 am

    #1904

    เยี่ยมไปเลยครับ พี่มิ้วค์

Leave a Reply

To Top